2013-07-03 5 views
2

Как использовать команду grep для фильтрации IP-адреса.Использование команды Grep для соответствия шаблону

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. Я попробовал google и получил несколько примеров, но не работал так, как я предполагаю.

Спасибо,

ответ

2
grep " 177\." File 

Это должен это сделать

+0

Он работает в этом случае, но не проверяет состояние «третьей колонки». – fedorqui

+0

Правильно. Но он работает и прост, как может быть – Ayman

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.

0

Я бы предпочел awk над этим, но здесь оба решения:

С grep:

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

С awk:

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

Основываясь на образец, вот еще один:

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

Результаты в (обратите внимание на ведущее место):

177.77.1.0/24

Смежные вопросы