如何使用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。我试图谷歌并得到一些例子,但没有像我打算那样工作。谢谢,
答案 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