如何使用 awk 打印特定列中字符串的第一个单词

如何使用 awk 打印特定列中字符串的第一个单词

我有这个输出使用cat csv文件

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

我想用 awk 打印出中心的每个名称(第 2 列),但只使用第一个单词,不重复。输出如下:

SCHOOL
INSTITUTE
EASD
ESCRBC

使用另一个 awk 命令,我想计算每个单词在第 2 列出现的次数。输出如下:

SCHOOL  4
INSTITUTE  2
EASD  1
ESCRBC  1

我该怎么做?

答案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

相关内容