2011-12-24 81 views
1

我想从我的文本文件中删除不需要的行有特定的词。我已经使用grep -v像这样使用grep从文本文件中删除多行

grep -v 'error|fault|unkownn' input.txt > out.txt 

它使用一个字而不是多个字。我错过了什么?

+1

我认为这是已经在这里回答:http://stackoverflow.com/questions/364105/using-grep-with-regular-expression-to-filter- out-matches,不是吗? – jstarek 2011-12-24 20:21:49

+0

@jstarek你是对的,我已经搜索了1小时所以找不到它,我不知道为什么它隐藏起来:)。谢谢你的帮助!! – raindrop 2011-12-24 20:33:10

回答

3

|仅当grep正在工作扩展正则表达式模式时才被视为正则表达式字符。所以,你需要做以下之一:

# Escape the | so that it's treated as a regex control character 
grep -v 'error\|fault\|unkownn' input.txt > out.txt 

# -E enables extended regex mode 
grep -vE 'error|fault|unkownn' input.txt > out.txt 

# egrep = grep -E 
egrep -v 'error|fault|unkownn' input.txt > out.txt 
+0

非常感谢你! – raindrop 2011-12-24 20:31:11

+0

**欢迎来到StackOverflow **。请记住通过按[复选标记](http://i.imgur.com/uqJeW.png)接受最能解决您问题的答案(如果有的话)。当你看到好的问答时,使用[灰色三角形](http://i.imgur.com/kygEP.png)进行投票。请注意,赋予其他人的声望点并不意味着对声誉点的扣除(除非您已发布奖金) – 2011-12-25 09:06:54