Использование шаблона awk для фильтрации данных файла - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть файл фоллинга (с именем / tmp / test99), который содержит строки:

"0","15","wall15"
123132,09808098,"0","15"

Я пытаюсь отфильтровать строки, содержащие «0» на 3-м месте и «15» на 4-м месте (как во втором ряду) Я попытался запустить:

cat /tmp/test99 | awk '/"0","15"/{print>"/tmp/0_15_file.out"} '

но вместо того, чтобы получать только второй ряд, я получаю также первый ряд, начинающийся с "0","15".

Не могли бы вы помочь с рисунком? Спасибо:)

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Вы можете проверить, равны ли поля 3 и 4 какому-либо жестко заданному значению, используя

awk -F, '$3=="\"0\"" && $4=="\"15\""'

Установите разделитель полей на запятую, а затем, если поле 3 равно "0", а поле 4 равно "15", выведите строку, иначе сбросьте.

См. онлайн демо :

s='"0","15","wall15"
123132,09808098,"0","15"'
awk -F, '$3=="\"0\"" && $4=="\"15\""' <<< "$s" 
# => 123132,09808098,"0","15"
0 голосов
/ 02 ноября 2018

Не могли бы вы попробовать следующее. (Прокомментируйте ваши усилия, вам НЕ нужно использовать cat с awk, он может читать Input_file сам по себе)

awk -F, '$3!~/\"0\"/ && $4!~/\"15\"/' Input_file
...