我有一个包含逗号分隔的数字列表的文件,如下所示:
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
其实要得到这个正确的,你需要添加一个结果