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

时间:2014-04-25 12:21:25

标签: linux bash command-line

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

87665
S
3243423
S
334243
N
...

这样的事情:

87665,S
3243423,S
334243,N
...

我一直在阅读一些similar questions,但它没有用......有没有办法在linux中使用单行命令执行此操作? 谢谢!

3 个答案:

答案 0 :(得分:9)

使用sed

sed '$!N;s/\n/,/' filename

使用paste

paste -d, - - < filename
如果输入的行数为奇数,

paste会留下尾随,

答案 1 :(得分:5)

这样的事可能适合你:

$ awk 'NR%2{a=$0;next}{print a","$0}' file
87665,S
3243423,S
334243,N

要处理奇数行的文件,您可以执行以下操作:

awk '{printf "%s%s", $0, NR%2?",":ORS}' file

答案 2 :(得分:1)

只是为了好玩,一个纯粹的bash解决方案:

while IFS= read -r l1; do
    read -r l2
    printf '%s\n' "$l1${l2:+,$l2}"
done < file

如果有奇数行,则最后一行不会有逗号。