Unix - печатать разные длины полей - PullRequest
0 голосов
/ 19 октября 2018

Я хотел бы напечатать общее количество раз, когда каждая длина встречается в поле.

Тип столбца - varChar, а строки в этом поле имеют длину 9, 10 или 15 символов.Я хочу знать, сколько существует каждой длины.

Мой код:

awk -F'|' 
'NR>1 $61!="" && 
if /length($61)=15/ then {a++} 
elif /length($61)=10/ then {b++} 
else /length($61)=9/ then {c++} 
fi {print a ", " b ", " c}'

ОШИБКА:

awk -F'|' 'NR>1 $61!="" && if /length($61)=15/ then {a++} elif /length($61)=10/ then {b++} else /length($61)=9/ then {c++} fi {print a ", " b ", " c}' 
 Syntax Error The source line is 1.
 The error context is
                NR>1 >>>  $61!= <<<
 awk: 0602-500 Quitting The source line is 1.

ВХОД

Трубка с разделителямиФайл .sqf с 1,2 миллионами строк и столбцом 61 - varChar 15.

1 Ответ

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

на основе вашего псевдокода. Полагаю, вы хотите

awk -F'|' -v OFS=', ' 'NR>1 {count[length($61)]++}
                       END  {print count[15],count[10],count[9]}' file

, в случае проверки качества данных у вас также будет отсчет другой длины.

Если вы хотите иметь0 вместо нуля для отсутствующих отсчетов, измените на count[n]+0, как предлагается в комментариях.

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