在文件中查找文本并在其后插入文本

在文件中查找文本并在其后插入文本

我有一个文本文件。该文本文件包含以下内容。

ServerName
ServerAdmin webmaster@localhost
DocumentRoot

我需要www.mydomain.com在 后面插入一段文字ServerName。有什么命令可以做到这一点吗?

答案1

使用sed

sed 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt

捕获的组\(ServerName\)在替换模式中用作\1

就地编辑文件,并进行备份,假设 GNU、ssedbusybox 或某些 BSD 实现sed

sed -i.bak 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt

原始文件将保留为file.bak,修改后的文件将保留为file.txt.bak

就地编辑,无需备份(ssedbusybox仅限 GNU):

sed -i 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt

(对于 BSD,请使用sed -i '' 's/...)。


更短,没有任何捕获组:

sed -i 's/^ServerName$/& www.mydomain.com/' file.txt

这里&将被替换为匹配。

答案2

sed --in-place 's/ServerName/& www.example.com/' /path/to/apache-vhost.conf

答案3

使用 sed 替换命令:

sed -i 's/ServerName/ServerName www.mydomain.com/' file.txt

相关内容