Как распечатать первое слово строки в определенном столбце с помощью awk

У меня есть этот вывод с помощью кошки csvfile:

Center_code       Name                    City_code
    800      SCHOOL NUMBER ONE              8000
    801      SCHOOL NUMBER TWO              8010
    802      INSTITUTE GALCERAN PINE        8020
    803      EASD PINE                      8030
    804      SCHOOL NUMBER THREE            8040
    805      INSTITUTE CAN CLOS             8050
    806      ESCRBC CAT                     8060
    807      SCHOOL NUMBER FOUR             8070

Я хочу распечатать каждое название центра (столбец 2) с awk, но использование только первого слова и не повторяя их. Вывод - это:

SCHOOL
INSTITUTE
EASD
ESCRBC

Используя другую команду awk, я хочу рассчитать, сколько раз делает каждое слово, появляются в столбце 2. Вывод - это:

SCHOOL  4
INSTITUTE  2
EASD  1
ESCRBC  1

Как я могу сделать это?

0
задан 23 April 2020 в 15:59

1 ответ

Попробуйте это,

awk 'NR>1{print $2}' csvfile | sort | uniq -c

Вывод:

      1 EASD
      1 ESCRBC
      2 INSTITUTE
      4 SCHOOL

или awk только:

awk 'NR>1{seen[$2]++} END{for (w in seen){printf "%s %s\n",w,seen[w];}}' csvfile

Вывод:

ESCRBC 1
SCHOOL 4
INSTITUTE 2
EASD 1

ОБНОВЛЕНИЕ:

Для разделенного от запятой файла:

Попробуйте,

 awk -F, 'NR>1{split($2,arr," ");print arr[1]}' csvfile | sort | uniq -c

или awk только:

awk -F, 'NR>1{split($2,arr," ");  seen[arr[1]]++} END{for (w in seen){printf "%s %s\n",w,seen[w];}}' csvfile
0
ответ дан 25 April 2020 в 10:41

Другие вопросы по тегам:

Похожие вопросы: