我想替换一些行,但不知何故我想在替换行的末尾添加行号。
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