如何使用sed正则表达式替换一行

时间:2011-11-01 03:47:19

标签: regex sed

我想替换文件中的日志命令并输出到另一个文件

我的日志命令可以像

log(xxx);
log ( xxx);

所以我使用以下

cat input.txt | sed -e '/\s*log\s*\(.*\)/d' > output.txt

然而,它也用“逻辑”替换该行。

我应该做些什么才能让它发挥作用。

由于

3 个答案:

答案 0 :(得分:1)

这种“腰带支撑”解决方案可能有效:

# sed '/\<log\>\s*([^)]*)/d' <<!
> a
> b
> logical(123)
> log(123)
> log ( 123)
> d
> e
> !
a
b
logical(123)
d
e

答案 1 :(得分:0)

不要逃避括号;你希望他们是文字。 (另外,据我所知,sed不支持正则表达式字符类速记。)

sed -e '/[ \t]*log[ \t]*(.*)/d' input.txt > output.txt

答案 2 :(得分:0)

如果您只想删除仅使用“log”的行,则可以使用grep。

grep -vw log input.txt >output.txt

或者,如果您只想将日志作为单个单词(而不是slog)包含在一对括号之前的可选空格之后,可以使用egrep:

egrep -v '\<log[ \t]*\(.*\)' input.txt >output.txt
相关问题