是否可以通过 CLI 在文件的特定行插入字符串?

是否可以通过 CLI 在文件的特定行插入字符串?

该文件的内容如下:

[Greet]

Hello
Hi
Hola

我想添加一个名为的字符串Hey,以便它的位置位于之后Hello

[Greet]

Hello
Hey
Hi
Hola

有没有办法echo通过命令行使用其他本机 Linux 工具来执行上述操作?

答案1

使用sed

由于sed插入或附加行的命令需要换行,因此最简单的方法是将sed命令放在文件中并告诉sed执行该文件。

例如:要Hey在 (every) 之后插入Hello,请创建以下文件:

/Hello/a\
Hey

然后调用sed

sed -f appendheyafterhello.sed < sourcefile > resultfile

这里还有更多sed命令,包括如何插入一行按模式或按特定的行号。

答案2

以下是一些 perl 解决方案:

perl -p -i -e 'print "Hey\n" if /Hi/'  filename

或者

perl -p -i -e 'print "Hey\n" if $. == 4'  filename

或者

perl -n -i -e 'print; print "Hey\n" if /Hello/' filename

相关内容