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

mar*_*ark 2 scripting sed shell-script

我有一个文件,其中某些(不是所有)行看起来像这样:

Sequence: n
Run Code Online (Sandbox Code Playgroud)

我想n用相应的行号替换。

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

enz*_*tib 5

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

awk '/Sequence: n/ { $2 = NR } { print }' input-file
Run Code Online (Sandbox Code Playgroud)

关于sed,我只能通过两次详细说明来做到这一点(用GNU sedssed:)测试:

sed '/^Sequence: n$/{s/n$//p;=;d;}' | sed '/^Sequence: $/{N;s/\n//;}' 
Run Code Online (Sandbox Code Playgroud)

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

  • 我会把你的 awk 命令写成:`awk '/Sequence: n/ {$2 = NR} {print}'` (2认同)