我有一个文本文件。该文本文件包含以下内容。
ServerName
ServerAdmin webmaster@localhost
DocumentRoot
我需要www.mydomain.com
在 后面插入一段文字ServerName
。有什么命令可以做到这一点吗?
答案1
使用sed
:
sed 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt
捕获的组\(ServerName\)
在替换模式中用作\1
。
就地编辑文件,并进行备份,假设 GNU、ssed
busybox 或某些 BSD 实现sed
:
sed -i.bak 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt
原始文件将保留为file.bak
,修改后的文件将保留为file.txt.bak
。
就地编辑,无需备份(ssed
或busybox
仅限 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