Я бы сказал, что вы можете решить вашу проблему следующим образом:
awk -F';' '{if (NF) {a += NF-1;}} END {print a}' test.txt
Вы хотите вести текущий подсчет всех выполненных вхождений (переменная a
).
Так как NF
вернет количество полей, которое на одно больше количества разделителей, вам нужно будет вычесть 1 для каждой строки. Это часть NF-1
.
Однако вы не хотите считать «-1» для строк, в которых вообще нет разделителя. Чтобы пропустить их, вам нужна часть if (NF)
.
Вот пример (возможно, надуманный):
$ cat test.txt
;;
; ; ; ;;
; asd ;;a
a ; ;
$ awk -F';' '{if (NF) {a += NF-1;}} END {print a}' test.txt
12
Обратите внимание на пустую строку в конце (для проверки на отсутствие разделителя) случай).