我真的是新的bash,我试图在csv文件列中搜索值,然后添加一个计数器。我在网上发现了这个,但它打印出来了,我一直试图计算R
显示的次数而不打印整个事物。
awk -F "\"*,\"*" '{print $2}' $file
csv文件类似于:
12345,R,N,N,Y,N,N,N,Bob Builder
我在第2栏中寻找R
。有人能指出我正确的方向吗?
答案 0 :(得分:5)
以下应该做你想要的(file.csv是你的csv文件):
区分大小写的版本:
cut -f 2 -d , file.csv | grep -c R
不区分大小写的版本:
cut -f 2 -d , file.csv | grep -ic R
<强>解释强>
cut -f 2 -d , file.csv
这将获取file.csv
的每一行并提取指定的字段。 -f 2
选项表示提取字段2,-d ,
表示使用“,
”作为字段分隔符。然后将其输出传送到grep
。
grep -c R
这会查找包含“R”的行。由于它传递了前一个cut
命令的内容,因此它在字段2中查找“R”。 -c
选项表示计算匹配行数。
答案 1 :(得分:2)
仅使用awk:
awk -F "\",\"" '{if ($2 == "R") cnt++} END{print cnt}' file
答案 2 :(得分:1)
只为了一个有趣的 - perl - 这可以算上一切。
perl -F, -anle 'map{$cnt{$_}{$F[$_]}++}0..$#F;END{print $cnt{1}{R}}'