![.sh 脚本,用于计算 .csv 中某个类别中的名称数量](https://linux22.com/image/131613/.sh%20%E8%84%9A%E6%9C%AC%EF%BC%8C%E7%94%A8%E4%BA%8E%E8%AE%A1%E7%AE%97%20.csv%20%E4%B8%AD%E6%9F%90%E4%B8%AA%E7%B1%BB%E5%88%AB%E4%B8%AD%E7%9A%84%E5%90%8D%E7%A7%B0%E6%95%B0%E9%87%8F.png)
我想根据类别计算 .csv 文件中的学生人数
类别 1 是名称,类别 2 是国家/地区,类别 3 是城市
.csv 文件显示如下:
michael_s;jpa;NYC
john_d;chn;TXS
jim_h;usa;POP
当我执行脚本时
cat students.csv | ./script.sh PAR
它应该只显示 PAR 中的学生人数,而且当我执行脚本时,它还可以显示其他城市,例如 NYC、PAR 等
我做了什么:
cut -d";" -f3 students.csv | sort | uniq -c
它按出席的方式工作,但我需要它在执行脚本时显示其他城市以及后面的另一个城市
cat students.csv | ./script.sh PAR
133 NYC
或者
cat students.csv | ./script.sh NYC
107 NYC
答案1
为什么不直接这样做...
cat students.csv | grep $1 |wc -l
这可以进入脚本并运行为:
./myscript.sh NYC
你的整个脚本看起来像:
#/bin/bash
cat students.csv | grep $1 |wc -l
要获取带有计数的城市名称,您可以使用:
cat student.csv|grep $1|printf "$1 $(wc -l) \n"