Печать строк из файла, где определенное поле не начинается с чего-либо - PullRequest
0 голосов
/ 13 сентября 2010

Я хочу напечатать все строки, где 3-е поле (поля, разделенные:) НЕ начинаются с # (чтобы указать, что 3-е поле является комментарием). Обратите внимание, что между: и #.

могут быть пробелы.

Пример ввода:

A: B: # hdfghdfg

A: B: # dfdfdfg

A: B: C

Желаемый вывод:

А: В: С

Я пытался:

awk -F: '$ 3 ~ / ^ # / {print}' run_out5> run_out6

но это не работает

Спасибо

Jagrati

Ответы [ 2 ]

4 голосов
/ 13 сентября 2010

Регулярное выражение может быть чуть-чуть чище:

awk -F: '$3 !~ /^ ?#/ { print }'

Часто лучше ожидать повторного пробела (пробела или табуляции), а не одного пробела, который может выглядеть идентично в печатном виде.

awk -F: '$3 !~ /^[[:space:]]*#/ { print }'
0 голосов
/ 13 сентября 2010

Используйте !~ для выбора строк, которые не соответствуют регулярному выражению.
Настройте регулярное выражение так, чтобы оно совпадало с полями с начальными пробелами.

awk -F : '$3 !~ /^ *#/ {print}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...