sed - 在纯文本文件中每隔第4行插入一个逗号

时间:2011-08-23 09:29:42

标签: sed awk

我正在尝试使用sed在第1,4,8行等值之后插入逗号,

sed '0-4 s/$/,/' in.txt > in2.txt

由于某些原因,这不起作用所以我想知道是否有人使用awk,sed或任何其他方法做任何解决方案。

我得到的错误是

sed: 1: "0-4 s/$/,/": invalid command code -

目前我的数据如下:

  
        City
        Address
        Zip Code
        County

我试图像这样格式化它        

        City,
        Address
        Zip Code
        County

非常赞赏。

2 个答案:

答案 0 :(得分:3)

0-4确实没有格式良好的sed语法。我会使用awk来做到这一点,但是使用它们很容易。

sed 's/$/,/;n;n;n' file

替换一行并打印出来,然后打印下三行而不进行替换,然后从脚本的开头重新开始;或

awk 'NR % 4 == 1 {sub(/$/,",")} {print}'

如果行号模4为1则进行替换,然后无条件打印。

Sed的寻址方式有时令人失望;没有标准的方法来计算线偏移,相对或参考例如文件的结尾。当然,awk更复杂,但如果你只能学习其中一个,那么一定要去awk。 (或者在这个时代,Python或Perl--一个更好的投资。)

答案 1 :(得分:2)

这可能适合你(GNU sed):

sed '1~4s/$/,/' file