bash - 如何使用 sed 替换特定单词后的文本?

标签 bash shell sed

输入文件sample.txt

some log file entries
some log file entries
Hostname:MyHostName
some log file entries
some log file entries

我必须更改 MyHostname 字符串

这个命令不起作用

sed -e 's/^Hostname: .*:/Hostname:mmphate/' sample.txt

sed -e 's/^Hostname: .*$/Hostname:mmphate/' sample.txt

最佳答案

在你的情况下,你可以按字面意思来做:

sed -e 's/Hostname:MyHostName/Hostname:mmphate/g' sample.txt

或者对于以“主机名:”开头的每一行:

sed -e 's/^Hostname:.*$/Hostname:mmphate/g' sample.txt

如果您的主机名(在您的示例中为 mmphate)在一个变量中(例如 hostname_var),您可以执行:

sed -e "s/^Hostname:.*$/Hostname:$hostname_var/g" sample.txt

注意:在这种情况下请注意双引号。

关于bash - 如何使用 sed 替换特定单词后的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42946760/

相关文章:

linux - 使用不同的参数执行不同的命令

bash - 设置脚本的工作目录

linux - 我可以将 Bash 提示符的输入颜色更改为与终端默认值不同的颜色吗?

bash - 如何使用空格和逗号连接行

linux - 批处理文件读取文件内容并迭代

bash - 为什么 tee 无法写入标准输出?

bash - 删除所有文件但将所有目录保留在 bash 脚本中?

c++ - 生成 C++ 重构脚本

sed - sed 与 parallel --jobs 选项的正确用法是什么?

linux - 用字符串替换文件中的一行