用于搜索csv文件列的Bash脚本,并计算值显示的次数

时间:2011-06-01 13:11:09

标签: bash csv counter

我真的是新的bash,我试图在csv文件列中搜索值,然后添加一个计数器。我在网上发现了这个,但它打印出来了,我一直试图计算R显示的次数而不打印整个事物。

awk -F "\"*,\"*" '{print $2}' $file

csv文件类似于:

12345,R,N,N,Y,N,N,N,Bob Builder

我在第2栏中寻找R。有人能指出我正确的方向吗?

3 个答案:

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