sed,使用行号

sed,使用行号

我想替换一些行,但不知何故我想在替换行的末尾添加行号。

s / display / echo打印{LINENUMBER} /

input file:
lorem ipsum
display

output:
lorem ipsum
echo print 2

我可以用 sed 做到这一点吗?

提前致谢。

CS。

答案1

您可以使用 sed = 函数在行上单独写入行号,并使用 sed d 函数删除匹配的模式。所以:

sed '/^display$/{=
d
}' [input file]

将输出:

lorem ipsum
2

假设原始文件中没有单独的行上的数字,您可以链接第二个 sed 命令来为这些行添加“echo print”,例如:

sed  's/^(\d+)$/echo print \1/'

尽管确切的语法可能会根据您的系统而改变( \d 并不总是可用等等......)

sed可能不是实现这一目标的最简单的工具。

答案2

我会这样做awk

awk '{if($0=="display") {print "echo print",NR} else print $0}' < file

答案3

Perl 解决方案:

perl -pe '$_ = "echo print $.\n" if /display/' input

相关内容