在bash中替换完全字符串

时间:2012-05-10 08:42:56

标签: string bash sed

我有一个如下所示的列表:

server
server.apple.com
server.apple.com
server
server.apple.com

现在,我想将“.apple.com”添加到只说“服务器”的行中。我试过用sed:

sed -e 's/\bserver\b/server.apple.com/g'

2 个答案:

答案 0 :(得分:2)

您可以使用:

sed 's/^server$/server.apple.com/g'

^表示行首,$表示行结束。

您也不需要-e参数,因为这只是基本的正则表达式。

如果您希望对server进行不区分大小写的搜索(也匹配SERVERSErvEr),则可以使用I函数,但不受各种版本的支持sed

sed 's/^server$/server.apple.com/Ig'

如果您没有支持sed的{​​{1}}版本,则可以使用:

I

答案 1 :(得分:2)

sed 's/^server$/server.apple.com/g' inputfile

^表示一行的开头,$表示结尾,因此这只匹配那些没有其他文字的行。