【发布时间】:2013-07-10 07:25:01
【问题描述】:
我正在尝试用空字符串替换与模式.*q= 或HTTP 匹配的行中的所有字符串。
我正在使用以下命令。
sed s/.\*q=\|HTTP.*//
但这不起作用。它不会用空字符串替换字符串。如果上面的命令有什么问题,请告诉我。
【问题讨论】:
-
您能给我们提供字符串示例吗?问题可能来自外壳扩展。
我正在尝试用空字符串替换与模式.*q= 或HTTP 匹配的行中的所有字符串。
我正在使用以下命令。
sed s/.\*q=\|HTTP.*//
但这不起作用。它不会用空字符串替换字符串。如果上面的命令有什么问题,请告诉我。
【问题讨论】:
这条线应该可以满足您的要求:
sed s'/\.\*q=\|HTTP//g'
例如:
kent$ echo "leave.*q=justHTTP foo"|sed s'/\.\*q=\|HTTP//g'
leavejust foo
你的命令:
s/../../ 中添加一个 g 标志
HTTP,则不应在其末尾添加.*,否则它将包含HTTP 后的所有字符串。 .*,则需要转义. 和 * 【讨论】:
length>=3 输出行?如果你想要这个,你可以将 sed 输出通过管道传送到sed ...|awk 'length>=3',两个步骤可以由 awk 单独由 awk 的gsub 完成。但它不适合你原来的问题。
. * and | 都被转义了。你看过我回答中的代码了吗?