我有这个输出使用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