Как проверить содержимое файла с помощью команды awk? - PullRequest
0 голосов
/ 02 октября 2018

У меня есть файл abc.txt с содержимым:

8503 C
8501 C
8500 C

Я хочу проверить содержимое файла таким образом, чтобы:

Для 8503 -значение должно быть "C"
, если да, то успех
, иначе Fail

Он должен повторяться для всего содержимого в файле

т.е.Предположим, что если файл содержит:

8503 E
8501 C
8500 C

Теперь 8503 имеет значение «E», то это ошибка.8501 имеет значение как "C", это успех

Как бы я это сделал, используя скрипт оболочки?


Я попробовал следующую команду:

awk -F ' ' '$2 != "C" { echo "Value is not C for happy path" }' < /tmp/abc.data

но это дает мне пустой вывод без отображения эха.

Я хочу посмотреть, если во втором столбце файла есть какое-либо значение, кроме "C", то это сбой.

Любой ввод приветствуется.

Спасибо,

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Просто чтобы помочь вам с вашим awk сценарием: ваша ошибка - использовать echo, который не является допустимой командой awk.Вместо этого используйте print:

awk '$2 != "C" { print "Value is not C for happy path" }' < /tmp/abc.data

(я удалил опцию -F, которая не обязательна: поля по умолчанию разделены пробелами)

Однако, как сказал Уолтер в комментариив вашем случае достаточно простой команды grep (здесь GNU sed добавляет строку заголовка):

grep E$ /tmp/abc.data | sed '1i Error lines:'
0 голосов
/ 02 октября 2018

Если вы хотите проверить, есть ли в столбце 2 какие-либо значения, отличные от «C», которые приведут к «отказу», тогда:

 awk '$2!="C"{e=1;exit}END{print e?"fail":"success"}'
...