awk: вывести 0 вместо пустого, если строки не были обработаны - PullRequest
0 голосов
/ 17 июня 2020

Рассмотрим этот пример awk, который суммирует все значения определенного поля в файле:

awk '{sum+=$2} END{print "total: ",sum}' file.txt

Когда файл пуст, awk ничего не выводит для суммы. Можно ли в таких случаях вывести 0?

1 Ответ

2 голосов
/ 17 июня 2020

В порядке моих предпочтений (от наиболее предпочтительного до наименее предпочтительного) для этой спецификации c вариант использования:

awk '{sum+=$2} END{print "total: ",sum+0}' file.txt

или

awk '{sum+=$2} END{printf "total: %d\n",sum}' file.txt

или

awk 'BEGIN{sum=0} {sum+=$2} END{print "total: ",sum}' file.txt
...