Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 在除1、2、3和最后一行之外的所有行末尾添加逗号_Unix_Awk_Sed - Fatal编程技术网

Unix 在除1、2、3和最后一行之外的所有行末尾添加逗号

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

我试图在所有行的末尾添加逗号,除了第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,
7

b标签无条件分支到标签。如有必要,可省略标签 在这种情况下,下一个循环开始


以及
perl
版本

$ seq 7 | perl -pe 's/$/,/ if $. > 3 && !eof'
1
2
3
4,
5,
6,
7
  • $。
    包含行号,
    eof
    检查它是否是最后一行

Perl版本,只是为了好玩:
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