请帮我讲解unix中的grep用法,无法识别低/超级情况

时间:2012-09-17 08:08:16

标签: bash unix grep

我希望我的shell只能找出引用中的模式, 但结果也返回了类似"MSGxxxxx"的内容 谁能给我一些建议?

这是我的剧本:

if egrep -e 'Msg|duplicate|deadlock|status = -|terminated due to disconnect' MYFILE.log
 then
    echo "I found something in your RAW data."    
  else
    echo "Nothing found!"
fi

3 个答案:

答案 0 :(得分:0)

如果您希望模式与行尾相匹配,请使用$。如果您希望它与行的开头匹配,请使用^

答案 1 :(得分:0)

使用-w标志只选择那些包含构成整个单词的匹配的行。

if egrep -w -e 'Msg|duplicate|deadlock|status = -|terminated due to disconnect' file
then
    echo "I found something in your RAW data."    
else
    echo "Nothing found!"
fi

或者,使用单词边界\b,如下所示:

if egrep -e '\bMsg\b|duplicate|deadlock|status = -|terminated due to disconnect' file
then
    echo "I found something in your RAW data."    
else
    echo "Nothing found!"
fi

答案 2 :(得分:0)

您正在寻找grep的-i选项以匹配不区分大小写。