如果我有一个CSV文件并且我想知道列数,我将使用以下命令:
head -1 CSVFile.csv | sed 's/,/\t/g' | wc -w
但是,每当每列都有一个包含空格的列名时,该命令就不起作用并给我一个无意义的数字。
编辑此命令的方法是什么,以便为我提供正确的列数?
e.g。在我的文件中,我可以使用列名(t - ZK)
或(e - 22)
例如我的文件可能是(前2行);
ZZ(v - 1),Tat(t - 1000)
1.1240128401924,2929292929
答案 0 :(得分:0)
也许使用最后一行而不是第一行。将“头部”改为“尾部”。这将是一个快速,简单的解决方案。
答案 1 :(得分:0)
您正在将sed
输出汇总到wc -w
,这会在输出中返回字的数量。因此,如果字段标题包含空格,那么这些空格将被视为不同的单词。
您可以使用awk
:
head -1 CSVFile.csv | awk -F, '{print NF}'
这将返回文件中的列数(假设文件以逗号分隔)。
答案 2 :(得分:0)
尝试使用awk
awk -F, 'NR==1 {print NF; exit}' CSVFile.csv
如果您希望使用head
,sed
和wc
尝试使用sed
替换分隔符作为换行符\n
而不是标签\t
,然后使用wc -l
计算行数而不是使用{{1}计算单词数}
wc -w
答案 3 :(得分:0)
perl -ane 'print scalar(@F)-1 if($.==1)' your_file
答案 4 :(得分:0)
假设标题名称中没有“,”(如field1,“Surname,name”,field3,...)
sed "1 s/[^,]//g;q" CSVFile.csv | wc -c
也可以只在sed中制作,但计数有点重。