统计单行CSV文件中的项目数量?

我有一个包含逗号分隔的数字列表的文件,如下所示:

2,8,42,75,101 

什么是最简单的命令(从Unixshell)来获得在这个文件中的数字的计数? 在上面的例子中,那将是5

最简单的可能只是计算逗号:

 sed 's/[^,]//g' yourfile.csv | wc -c 

通常你会添加一个来获得元素的数量,但是如果有一个换行符,它也会被计算在内。 在这种情况下,我想方便。

另外用awk:

 awk -F, '{print NF}' yourfile.csv 

按照这里: http : //www.cyberciti.biz/faq/finding-bash-shell-array-length-elements/

这不是太困难

如果你可以像这样在数组中定义你的元素列表:

 ArrayName=("element 1" "element 2" "element 3") 

那么它就像下面这样简单:

 echo ${#ArrayName[@]} 

但是你有一个csv,所以这可能会更好: http : //www.thelinuxblog.com/working-with-csv-files-in-bash/

 echo $(cat file.csv | sed 's/, /_ /g' | tr ',' '\n' | wc -l) 

find这个解决scheme

 cat file.csv | sed 's/,/ /g' | wc -w 

如果你想使用python,你可以这样做:

 str = given_csv_line_as_string if str[-1] == ',': str = str[:-1] print len(given_csv_line_as_string.split(',')) 

请注意,这将返回正确的长度,无论是否有逗号。

我相信在perl中有类似和更多的sysadmin-y,但是我不使用perl。

或者使用grep

 grep -o "," | wc -l 

其实要得到这个正确的,你需要添加一个结果