Фильтрация записей на основе текста в Unix - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь извлечь из этого файла все записи, которые соответствуют тексту "IN" в 10-м поле.

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

awk '$10 == "IN" {print $0}'

input_file: мой входной файл

A1|A2|A3|A4|A5|A6|A7|A8|A9|PK|A11|A13|A14|A15|A16|A17|A18
1|2|3|4|5|6|7|8|9|IN|11|12|13|14|15|16|17|18
AW|BW|CQ|AA|AR|AF|RR|AKL|ASD|US|PP|BN|TY|OL|Q3|M8|I7|V6
AR|BR|CR|A8|AN|AQ|RU|A11|A13|IN|P9P|B0N|T2Y|O4L|Q43|M88|I71|V16

output_file: мой вывод должен быть

1|2|3|4|5|6|7|8|9|IN|11|12|13|14|15|16|17|18
AR|BR|CR|A8|AN|AQ|RU|A11|A13|IN|P9P|B0N|T2Y|O4L|Q43|M88|I71|V16

все записи, которые соответствуют «IN» в 10-м поле, должны быть отфильтрованы.

1 Ответ

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

Поскольку вы не упомянули разделитель полей в коде awk, поэтому по умолчанию он используется в качестве разделителя полей, а ваш Input_file имеет | разделитель трубы, поэтому awk знает, что вы должны установить его в коде.

Не могли бы вы попробовать следующее.

awk -F'|' '$10=="IN"'  Input_file

Объяснение: Добавление пояснения к вышеуказанному коду.

awk -F'|' '         ##Setting field separator as |(pipe) for all lines of Input_file.
$10=="IN"           ##Checking condition if 10th field is equal to IN here if yes then print the current line.
'  Input_file       ##Mentioning Input_file name here.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...