输入文件sample.txt
some log file entries
some log file entries
Hostname:MyHostName
some log file entries
some log file entries
Run Code Online (Sandbox Code Playgroud)
我必须改变MyHostname
字符串
该命令不起作用
sed -e 's/^Hostname: .*:/Hostname:mmphate/' sample.txt
sed -e 's/^Hostname: .*$/Hostname:mmphate/' sample.txt
Run Code Online (Sandbox Code Playgroud)
对于你的情况,你可以从字面上做到:
sed -e 's/Hostname:MyHostName/Hostname:mmphate/g' sample.txt
Run Code Online (Sandbox Code Playgroud)
或者对于以“主机名:”开头的每一行:
sed -e 's/^Hostname:.*$/Hostname:mmphate/g' sample.txt
Run Code Online (Sandbox Code Playgroud)
如果您的主机名(示例中为 mmphate)位于变量中(例如 hostname_var),您可以执行:
sed -e "s/^Hostname:.*$/Hostname:$hostname_var/g" sample.txt
Run Code Online (Sandbox Code Playgroud)
注意:在这种情况下请注意双引号。
另一个简单版本
sed 's/\(Hostname:\).*/\1mmphate/' sample.txt
Run Code Online (Sandbox Code Playgroud)
如果您想使用 shell 变量中的主机名,您可以这样做。
$ export _myhost="My Host Name"
$ sed "s/\(Hostname:\).*/\1${_myhost}/" sample.txt
Run Code Online (Sandbox Code Playgroud)