shell中文件一列中的唯一字计数

xmakbtuz  于 2023-08-07  发布在  Shell
关注(0)|答案(4)|浏览(106)

我试图使用shell脚本从文件的一列中找出唯一单词的数量,以及单词本身。我是这么做的。输入文件包含(文件名:gnc.txt,城市名称后的新行):

Male,Tyrus,Seattle
Male,Sam,Seattle
Male,Meha,Seattle
Male,John,Seattle
Male,Sam,Beijing
Male,Meha,Paris
Male,Meha,Berlin

字符串
作为第一步,我发现了唯一名称的数量,这是4使用下面的shell命令。

awk -F\, '{ if(!a[$2]) cnt++;a[$2]++;next}END{ print cnt }' gnc.txt


下一步,我想获得唯一名称的列表:即Tyrus、Sam、Meha和John
有人能帮我修改一下上面的命令吗?

mspsb9vt

mspsb9vt1#

使用此awk:

awk -F, '{c[$2]++} END{for (i in c) print i, c[i]}' file
Tyrus 1
Sam 2
John 1
Meha 3

字符串

0kjbasz6

0kjbasz62#

你也可以使用这个:

cut -d',' -f2 file | sort | uniq -c
      1 John
      3 Meha
      2 Sam
      1 Tyrus

字符串

5tmbdcev

5tmbdcev3#

这个也行

cat gnc.txt |  sed -e 's/,/ /g' | awk '{print $2}' | sort | uniq -c
 1 John
 3 Meha
 2 Sam
 1 Tyrus

字符串
sed -e 's/,/ /g'->打印时将逗号转换为空格(不修改文件)
awk '{print $2}'->仅打印第二列
sort | uniq -c->按字母顺序对单词进行排序,并对单词进行计数

wd2eg0qa

wd2eg0qa4#

echo '
Male,Tyrus,Seattle
Male,Sam,Seattle
Male,Meha,Seattle
Male,John,Seattle
Male,Sam,Beijing
Male,Meha,Paris
Male,Meha,Berlin' |
mawk '{ __[$2]++ } END { for (_ in __) print _, __[_] }' FS=, |
gsort       
        John    1
        Meha    3
        Sam     2
        Tyrus   1

相关问题