Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用sed搜索两个模式并替换为一个_Linux_Sed - Fatal编程技术网

Linux 使用sed搜索两个模式并替换为一个

Linux 使用sed搜索两个模式并替换为一个,linux,sed,Linux,Sed,我有一个包含以下内容之一的文件: &信息 或 信息 两人都开始排队。 如果文件包含#消息或消息,我如何在其中搜索,然后用消息替换 谢谢 sed 's/#?messages/Messages/g' ??表示0或1元素 $ sed -r -e 's/^[#]?messages/Messages/' file1 file2 ... fileN 注意模式线起始处的锚定;这不会在输入时混淆,例如: $messages $messages more$messages 还请注意,如果需要,可以使用-r开

我有一个包含以下内容之一的文件:

&信息 或

信息

两人都开始排队。 如果文件包含#消息或消息,我如何在其中搜索,然后用消息替换

谢谢

sed 's/#?messages/Messages/g'
??表示0或1元素

$ sed -r -e 's/^[#]?messages/Messages/' file1 file2 ... fileN
注意模式线起始处的锚定;这不会在输入时混淆,例如:

$messages $messages more$messages

还请注意,如果需要,可以使用-r开关打开实正则表达式。

-r
是一个GNU扩展,用于激活扩展正则表达式(ERE),而不是“实…”,在这种情况下不需要ERE,只需要基本REs,这是所有SED默认支持的。此外,也没有必要将
#
添加到字符列表中,因为它不是重元字符。