使用bash在行尾添加字符串

时间:2018-02-20 08:22:30

标签: bash sed

我有一些包含这样的字符串的.yml文件

test_test_servicename: test-alpha

最后我想递归追加“-beta”

test_test_servicename: test-alpha-beta

我在这里发现了一个类似的帖子,他们说要使用:

sed '/^servicename:/ s/$/-beta/' file

但我不知道为什么它在我的情况下不起作用。如果我删除^它可以正常工作,但文件中包含^M个字符。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您会看到该文件已满#{1}}"可能是因为您在Windows计算机上生成或上次编辑了该文件,该计算机使用CR + LF作为行结尾。 ^M是CR(回车)字符。在将^M应用于之前,使用此命令将文件转换为Unix行结尾(仅限LF)

sed
dos2unix <your file>

没错。丢弃插入符sed '/servicename:/ s/$/-beta/' file

在RegEx中,插入符表示行的开头。因此^会匹配这些行:

^servicename:

但不是这些行

servicename: abc
servicename::::::