/bin/sed -e 's#abc#zzz#g' 中的 # 字符含义是什么?

/bin/sed -e 's#abc#zzz#g' 中的 # 字符含义是什么?

#此行中的字符含义是什么:

/bin/sed -e 's#abc#zzz#g'

答案1

它是分隔符或分隔符。最常用的/

sed 's/old/new/' file

但是 sed 会将命令 (s) 后的第一个字符作为分隔符。您可以使用任何方便的字符,例如...

sed 's%old%new%' file

如果文件包含/(或其他常规分隔符),这将非常有用。您可以选择一些您知道不需要放入表达式中的字符作为分隔符sed,从而省去很多烦人的转义。

假设你想替换

https://askubuntu.com/questions

https://askubuntu.com/posts

你可以使用

sed 's/https:\/\/askubuntu.com\/questions/https:\/\/askubuntu.com\/posts/' file

但最好使用

sed 's|https://askubuntu.com/questions|https://askubuntu.com/posts|' file

答案2

它是一个分隔符,就像 一样"/",与 相同's/abc/zzz/g'

它的意思是搜索“abc”并将其替换为“zzz”,使用全局标志,意味着对该行上的所有“abc”都执行此操作,而不仅仅是第一个。

您还可以对模式地址使用其他分隔符,但在这种情况下,您需要对其进行转义才能正确解释:

sed -r '\#abc#p'

相关内容