【发布时间】:2018-03-08 18:57:52
【问题描述】:
我正在尝试在除第 1 行、第 2 行、第 3 行和最后一次之外的所有行的末尾添加逗号。 我尝试使用 sed 来实现它:
sed '$![1 2 3 s/,/' filename
但这不起作用。
有什么建议吗?
【问题讨论】:
我正在尝试在除第 1 行、第 2 行、第 3 行和最后一次之外的所有行的末尾添加逗号。 我尝试使用 sed 来实现它:
sed '$![1 2 3 s/,/' filename
但这不起作用。
有什么建议吗?
【问题讨论】:
您可以使用地址范围1,3 排除前三行添加逗号,然后删除最后一行(地址中的$)的逗号。
sed '1,3!s/$/,/;$s/,$//'
【讨论】:
perl -ne 's/$/,/ unless (1 .. 3) || eof'
,。 sed '1,3{$q};1,3!s/$/,/;$s/,$//' 应该解决这个问题。
-pe... 同样的另一种方法是 perl -pe 's/$/,/ if $. > 3 && !eof'
另一种方法是使用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
来自manual
b 标签 无条件分支到标签。标签可以省略,在 这种情况下开始下一个循环。
还有一个perl 版本
$ seq 7 | perl -pe 's/$/,/ if $. > 3 && !eof'
1
2
3
4,
5,
6,
7
$. 包含行号,eof 检查是否是最后一行【讨论】: