2

如何使用 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

我只想过滤以 177. 开头的条目,它出现在第 3 列。列之间没有统一的间距。

抱歉,我不习惯使用 grep 。我试图用谷歌搜索并得到一些例子,但没有按照我打算的方式工作。

谢谢,

4

4 回答 4

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/'意思是:如果第三个字段包含一个以 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表示:查找具有此模式的字符串:行首、单词、空格、单词、空格、177。

于 2013-07-03T15:39:45.853 回答
2
 grep " 177\."   File

应该这样做

于 2013-07-03T15:44:04.500 回答
0

根据您的示例,这是另一个示例:

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

结果(注意前导空格):

177.77.1.0/24

于 2013-07-03T15:47:04.260 回答
0

我更喜欢awk这个,但这里有两个解决方案:

grep

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

awk

awk '$3!~/^177/' inputFile
于 2013-07-03T15:44:20.220 回答