使用Grep Command匹配模式

时间:2013-07-03 15:36:45

标签: grep

如何使用grep命令过滤ip地址。

3267  3        77.80.177.0/24       00:00:00:00:00:00 100011    0     0     0    0 y
3289  1        177.77.1.0/24        00:00:00:00:00:00 100010    0     0     0    0 y

我想只过滤以第7列开头的177开头的条目。 列之间没有统一的间距。

抱歉,我不习惯使用grep。我试图谷歌并得到一些例子,但没有像我打算那样工作。

谢谢,

4 个答案:

答案 0 :(得分:3)

使用awk

可能会更容易
$ awk '$3 ~ /^177/' file
3289  1        177.77.1.0/24        00:00:00:00:00:00 100010    0     0     0    0 y

'$3 ~ /^177/'表示:如果第3个字段包含以177开头的字符串,则打印出来。

要完成grep

$ grep -E "^\w+\s+\w+\s+177" file
3289  1        177.77.1.0/24        00:00:00:00:00:00 100010    0     0     0    0 y

-E "^\w+\s+\w+\s+177" file表示:查找具有此模式的字符串:line,word,spaces,word,spaces的开头,177。

答案 1 :(得分:2)

 grep " 177\."   File

应该这样做

答案 2 :(得分:0)

我希望awk超过这个,但这里都是解决方案:

使用grep

grep -vE '\s*177\.([0-9]+\.){2}[0-9]\/[0-9]+\s*' inputFile

使用awk

awk '$3!~/^177/' inputFile

答案 3 :(得分:0)

根据您的样本,这是另一个:

$ grep -o '[^.0-9]177.*/[0-9]{2}'

结果(注意领先空间):

  

177.77.1.0/24