2013-03-12 4 views
2

У меня есть большие файлы, которые я хочу сделать для выбора печати. Я хочу найти строку на основе соответствия шаблону и распечатать эту строку и все следующие строки до конца файла. Я бы использовал sed, однако совпадение основано только на первом и втором столбцах.выборочная печать

awk '{if($1=="XYZ" && $2=="GT") print $0}' in.file > out.file 

Как изменить приведенное выше, а также распечатать все строки после матча.

ответ

3

Используйте флаг печати:

awk '$1=="XYZ" && $2=="GT" { f = 1 } f' in.file > out.file 

f устанавливается в 1, когда два условия соблюдены. Одинокий f в конце сценария вызывает блок по умолчанию { print $0 } когда 1.

+0

отличный, полезный инструмент для изучения! – user1308144

1

Или попробуйте использовать образец диапазона:

awk '$1=="XYZ" && $2=="GT",end' file 
1

Для меня ваш sed подход был прекрасен. Если разделитель равен ;:

sed -n -e '/^XYZ;GT;/,$p' your_file 
Смежные вопросы