awk, чтобы добавить 0 к выводу на печать, если условие не выполнено - PullRequest
0 голосов
/ 04 сентября 2018

В awk ниже я настраиваю loop для чтения в каждом файле определенного типа. Ниже приведены примеры файлов двух типов, но если подсчитать нечего (пример file1), я не получаю вывод. Я пытаюсь напечатать вывод на основе любого из условий, если его нет, то перед 100 * * печатается 0. Если есть что посчитать, то awk выполняется так, как ожидалось, но я не могу откорректировать его правильно. Оба файла tab-delimited и ... представляют первые три пропущенные строки. Спасибо :).

AWK

awk -F'\t' 'FNR == 3 {next}; $2 ~/MAPD>0.5/ {count++} END{print count " MAPD above QC Detected"}' file1 | awk '$1 == " MAPD above QC Detected" {print "0 MAPD above QC Detected"}'

file1

....
....
.... 
chr1:1234   foo,bar
chr2:5678   foo,bar

file2

....
....
....
chr1:1234   foo,MAPD>0.5
chr2:5678   foo,bar

желаемый вывод

file1

0 MAPD above QC Detected

file2

1 MAPD above QC Detected

1 Ответ

0 голосов
/ 04 сентября 2018

Изменить print count на print count+0.

Как неинициализированная переменная, count имеет начальное значение ноль или ноль, и когда вы не выполняете никаких арифметических операций с ней (как это происходит, когда ничего не совпадает с вашими данными), awk не знает вас хотите, чтобы было напечатано числовое значение 0, и вместо этого печатает строковое значение NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...