使用Grep命令匹配模式

使用Grep命令匹配模式,grep,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 我只想筛选以177开头的条目。出现在第3列。 柱之间没有统一的间距 对不起,我不习惯使用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
我只想筛选以177开头的条目。出现在第3列。 柱之间没有统一的间距

对不起,我不习惯使用grep。我试着用谷歌搜索,得到了一些例子,但并没有像我想的那样工作


谢谢,

使用
awk可能会更容易:

$ awk '$3 ~ /^177/' file
3289  1        177.77.1.0/24        00:00:00:00:00:00 100010    0     0     0    0 y
awk '$3!~/^177/' inputFile
“$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
grep -vE '\s*177\.([0-9]+\.){2}[0-9]\/[0-9]+\s*' inputFile
-E“^\w+\s+\w+\s+177”文件
表示:查找具有以下模式的字符串:行首、单词、空格、单词、空格、177

 grep " 177\."   File

这应该可以做到

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

使用
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
grep -vE '\s*177\.([0-9]+\.){2}[0-9]\/[0-9]+\s*' inputFile
使用
awk

$ awk '$3 ~ /^177/' file
3289  1        177.77.1.0/24        00:00:00:00:00:00 100010    0     0     0    0 y
awk '$3!~/^177/' inputFile

根据您的样本,这里还有一个:

$ grep -o '[^.0-9]177.*/[0-9]{2}'
结果(请注意前导空格):

177.77.1.0/24


它在这种情况下工作,但不检查
第三列
条件。