我如何用sed在另一行前面放置一行?

时间:2018-10-29 19:49:18

标签: awk sed

如何转换这样的文件:

ghosts: [[8, 16]]
pacman: [3, 15]
ghosts: [[4, 26]]
pacman: [4,15]

到这样的文件:

ghosts: [[8, 16]], pacman: [3, 15]
ghosts: [[4, 26]], pacman: [4,15]

使用sed命令?

我尝试了sed -e 's/\npac/, pac/g' input_file,结果没有任何变化。

3 个答案:

答案 0 :(得分:0)

考虑到您实际的Input_file与所示示例相同,并且如果您对awk感到满意,那么下面的内容可能会帮助您。

awk -v s1="," '{printf("%s%s",$0~/^ghosts/ && FNR>1?ORS:FNR==1?"":s1 OFS,$0)} END{print ""}'  Input_file

答案 1 :(得分:0)

这可能对您有用(GNU sed):

 sed 'N;s/\n/, /' file

将下一行添加到当前行,并用逗号和空格替换换行符。

答案 2 :(得分:0)

另一个awk

$ awk '{ORS=NR%2?", ":RS}1' file

ghosts: [[8, 16]], pacman: [3, 15]
ghosts: [[4, 26]], pacman: [4,15]

或者,用pr

$ pr -2ats', ' file

这应该是最短的方法!