为什么这个SED命令不起作用?

时间:2013-07-10 07:25:02

标签: linux unix sed gnu

我正在尝试将符合模式.*q=HTTP的行中的所有字符串替换为空字符串。

我正在使用以下命令。

sed s/.\*q=\|HTTP.*//  

但这不起作用。它不会用空字符串替换字符串。如果上述命令有任何问题,请告诉我。

1 个答案:

答案 0 :(得分:3)

此行应符合您的要求:

sed s'/\.\*q=\|HTTP//g'

例如:

kent$  echo "leave.*q=justHTTP foo"|sed s'/\.\*q=\|HTTP//g'        
leavejust foo

你的命令:

  • 在sed命令中更好地引用表达式
  • 如果您要替换所有出现的模式,在您的情况下是。* q或HTTP,您需要g
  • 中的s/../../标记
  • 如果您只想替换HTTP,则不应在其末尾添加.*,否则它将删除HTTP之后的所有字符串。
  • 如果您想要匹配文献字符串.*,则需要转义. *