如何使用 sed 将某些文本替换为相应的行号?

如何使用 sed 将某些文本替换为相应的行号?

我有一个文件,其中某些(不是全部)行如下所示:

Sequence: n

我希望替换n为相应的行号。

我怎样才能用 sed 做到这一点?

答案1

这非常简单awk(感谢@glenn jackman):

awk '/Sequence: n/ { $2 = NR } { print }' input-file

关于sed,我只能通过两次详细阐述来做到这一点(用GNU sed和 进行测试ssed:):

sed '/^Sequence: n$/{s/n$//p;=;d;}' | sed '/^Sequence: $/{N;s/\n//;}' 

第一个在“Sequence:”之后的行中插入行号,第二个将两行连接起来。

相关内容