Unix 在除1、2、3和最后一行之外的所有行末尾添加逗号
我试图在所有行的末尾添加逗号,除了第1行、第2行、第3行和最后一次。 我尝试使用sed来实现它:Unix 在除1、2、3和最后一行之外的所有行末尾添加逗号,unix,awk,sed,Unix,Awk,Sed,我试图在所有行的末尾添加逗号,除了第1行、第2行、第3行和最后一次。 我尝试使用sed来实现它: sed '$![1 2 3 s/,/' filename 但这是行不通的 有什么建议吗?您可以使用地址范围1,3排除添加逗号时的前三行,然后从最后一行($地址中)删除逗号 另一种方法是使用b命令跳过这些行 $ # GNU version: sed '1,3b; $b; s/$/,/' $ seq 7 | sed -e '1,3b' -e '$b' -e 's/$/,/' 1 2 3 4, 5, 6
sed '$![1 2 3 s/,/' filename
但这是行不通的
有什么建议吗?您可以使用地址范围
1,3
排除添加逗号时的前三行,然后从最后一行($地址中)删除逗号
另一种方法是使用
b
命令跳过这些行
$ # GNU version: sed '1,3b; $b; s/$/,/'
$ seq 7 | sed -e '1,3b' -e '$b' -e 's/$/,/'
1
2
3
4,
5,
6,
7
从
b标签无条件分支到标签。如有必要,可省略标签
在这种情况下,下一个循环开始
以及
perl
版本
$ seq 7 | perl -pe 's/$/,/ if $. > 3 && !eof'
1
2
3
4,
5,
6,
7
包含行号,$。
检查它是否是最后一行eof
Perl-ne的/$/,/除非(1..3)| | eof'
非常干净。只有一个例外情况会失败:如果文件只有1,2,3行长,而最后一行的末尾有一个,
<代码>sed'1,3{$q};1,3!s/$/,/$s/,$/'应该解决这个问题。@melpomene应该是-pe
。。。另一种方法是perl-pe的/$/,/if$。>3 && !eof'
$ seq 7 | perl -pe 's/$/,/ if $. > 3 && !eof'
1
2
3
4,
5,
6,
7