在文件中的特定字符串后添加新行?

在文件中的特定字符串后添加新行?

现在我正在使用

echo sed '/\Random/a \
 newly added line' info.txt

将一些文本附加到文件中,但我还需要在某个字符串下面添加文本,比如说随机,我知道使用 sed 是可能的,但是当脚本运行时,它会在控制台中显示新的文件内容,但它不是实际上显示文件中的相同更改。

例子:-

输入文件

Some text
Random
Some stuff

输出文件

Some text
Random
newly added line
Some stuff

答案1

我假设这echo只是一个拼写错误,因为除非您的环境有特定的情况,否则相同的命令只会给出输出

sed '/Random/a\
newly added line' info.txt

如果您想sed实际操作文件而不是发送到 stdout,那么您需要使用-i一些sed实现支持的开关,尽管语法不同:

  • GNU、busybox、NetBSD、OpenBSD 至少:

    sed -i '/Random/a\
    newly added line' info.txt 
    
  • FreeBSD、MacOS:

    sed -i '' '/Random/a\
    newly added line' info.txt 
    
  • -i开关在 Solaris 中不可用sed

最好一开始就不要运行它,-i以确保它按照您的要求运行。一旦您确定是这样,请添加-i,您将获得所需的内容。

文件的内容如下所示,可以通过以下方式确认cat info.txt

Some text
Random
newly added line
Some stuff

相关内容