提取最后 n 行并使用 sed 单行在前面添加字符

提取最后 n 行并使用 sed 单行在前面添加字符

考虑这个文件:

1
2
3
4
5

我可以用这个提取最后 3 行sed单行:

$ /bin/sed input.txt -e ':a;$q;N;4,$D;ba'

但我还想#在每行前面添加一些字符 ( ),以便输出如下所示:

# 3
# 4
# 5

我该如何修改单行代码来做到这一点?我的意思是,无需添加另一个sed调用(使用| /bin/sed -e 's/^/# /')。

我更愿意使用sed只出于同样的原因使用原来的问题,即我的系统可用的二进制文件有限。

答案1

而不是使用sed打印最后一个n线路使用tail

$ tail -3 input.txt | sed 's/^/# /'
# 3
# 4
# 5

另外你也不需要cat该文件,请参阅猫的无用用途

仅使用sed

sed ':a;${s/^/# /;s/\n/&# /g;q;};N;4,$D;ba' input.txt

相关内容