String 替换bash中的精确字符串

String 替换bash中的精确字符串,string,bash,sed,String,Bash,Sed,我有一个如下列表: server server.apple.com server.apple.com server server.apple.com 现在,我想把“.apple.com”添加到“服务器”的行中。我试过以下方法: sed -e 's/\bserver\b/server.apple.com/g' 您可以使用: sed 's/^server$/server.apple.com/g' ^表示行的开始,$表示行的结束 您也不需要-e参数,因为这只是基本的正则表达式 如果您希望对服务器

我有一个如下列表:

server
server.apple.com
server.apple.com
server
server.apple.com
现在,我想把“.apple.com”添加到“服务器”的行中。我试过以下方法:

sed -e 's/\bserver\b/server.apple.com/g'
您可以使用:

sed 's/^server$/server.apple.com/g'
^
表示行的开始,
$
表示行的结束

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

如果您希望对
服务器
进行不区分大小写的搜索(也要匹配
服务器
服务器
),您可以使用
I
功能,但是不同版本的
sed
不支持该功能:

sed 's/^server$/server.apple.com/Ig'
如果您没有支持
I
sed
版本,您可以使用:

sed 's/^[Ss][Ee][Rr][Vv][Ee][Rr]$/server.apple.com/g'
您可以使用:

sed 's/^server$/server.apple.com/g'
^
表示行的开始,
$
表示行的结束

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

如果您希望对
服务器
进行不区分大小写的搜索(也要匹配
服务器
服务器
),您可以使用
I
功能,但是不同版本的
sed
不支持该功能:

sed 's/^server$/server.apple.com/Ig'
如果您没有支持
I
sed
版本,您可以使用:

sed 's/^[Ss][Ee][Rr][Vv][Ee][Rr]$/server.apple.com/g'
^
表示行的结束,而
$
表示结束,因此这只匹配那些没有额外文本的行


^
表示一行的行尾,
$
因此这只匹配没有额外文本的行。

“句子”可能不是描述它的最佳词语。“句子”可能不是描述它的最佳词语。谢谢!当你们看到它的时候,这是很明显的:)若我想忽略这个案例?(“服务器”有时在列表中是“服务器”或“服务器”)太棒了!非常感谢!为了让一切变得更加动态,是否有一个正则表达式可以匹配任何没有域的东西,比如:我想匹配每一行不以apple.com或10个子apple.com子域结尾的内容,而不仅仅是特定的服务器名称?让这个不区分大小写?谢谢!当你们看到它的时候,这是很明显的:)若我想忽略这个案例?(“服务器”有时在列表中是“服务器”或“服务器”)太棒了!非常感谢!为了让一切变得更加动态,是否有一个正则表达式可以匹配任何没有域的东西,比如:我想匹配每一行不以apple.com或10个子apple.com子域结尾的内容,而不仅仅是特定的服务器名称?让这个不区分大小写?