Bash在文件中合并2个连续的行

Ait*_*tor 2 linux bash command-line

我想在给定文件上转换此文本:

87665
S
3243423
S
334243
N
...
Run Code Online (Sandbox Code Playgroud)

这样的事情:

87665,S
3243423,S
334243,N
...
Run Code Online (Sandbox Code Playgroud)

我一直在阅读一些类似的问题,但它没有用......有没有办法用linux中的单行命令做到这一点?谢谢!

dev*_*ull 9

使用sed:

sed '$!N;s/\n/,/' filename
Run Code Online (Sandbox Code Playgroud)

使用paste:

paste -d, - - < filename
Run Code Online (Sandbox Code Playgroud)

paste如果,输入具有奇数行,则会留下尾随.


use*_*001 5

这样的事可能适合你:

$ awk 'NR%2{a=$0;next}{print a","$0}' file
87665,S
3243423,S
334243,N
Run Code Online (Sandbox Code Playgroud)

要处理奇数行的文件,您可以:

awk '{printf "%s%s", $0, NR%2?",":ORS}' file
Run Code Online (Sandbox Code Playgroud)

  • +1:@user000001通常你可以做 `awk 'ORS=(NR%2)?",":RS' file` (2认同)