ano*_*onD 2 csv indexing bash shell awk
我想根据列名称获取 CSV 列的索引号。例如,我有这些列:TotalReported;Deceased;City
我尝试这样做:
head -n1 data.csv | tr ";" "\n" | grep -nx "Deceased" | cut -d";" -f1
Run Code Online (Sandbox Code Playgroud)
但没有打印任何内容。我也尝试这样做:
awk -F, '{ for(i=1; i<=NF; i++) if($i=="Deceased") {print i} exit}' data.csv'
Run Code Online (Sandbox Code Playgroud)
它不打印任何内容。我能做些什么?
这是文件的内容data.csv:
Date_of_report;Municipality_code;Municipality_name;Province;Total_reported;Hospital_admission;Deceased
2020-03-13 10:00:00;GM0003;Appingedam;Groningen;0;0;0
2020-03-13 10:00:00;GM0010;Delfzijl;Groningen;0;0;0
2020-03-13 10:00:00;GM0014;Groningen;Groningen;3;0;0
2020-03-13 10:00:00;GM0024;Loppersum;Groningen;0;0;0
2020-03-13 10:00:00;GM0034;Almere;Flevoland;1;1;0
2020-03-13 10:00:00;GM0037;Stadskanaal;Groningen;0;0;0
2020-03-13 10:00:00;GM0047;Veendam;Groningen;0;0;0
2020-03-13 10:00:00;GM0050;Zeewolde;Flevoland;1;0;0
2020-03-13 10:00:00;GM0059;Achtkarspelen;Friesland;0;0;0
2020-03-13 10:00:00;GM0060;Ameland;Friesland;0;0;0
2020-03-13 10:00:00;GM0072;Harlingen;Friesland;0;0;0
2020-03-13 10:00:00;GM0074;Heerenveen;Friesland;0;0;0
Run Code Online (Sandbox Code Playgroud)
基本上我想获取一列的索引号,然后将索引号放入此awk命令中
v1=$(awk -F";" '{x+=$index}END{print x}' ./data.csv)
Run Code Online (Sandbox Code Playgroud)
并获取该特定列的所有数字的总和。最后三列很重要,因为您当然只能对它们求和。
用于egrep -o获取行的开头并计算分号:
echo 'TotalReported;Deceased;City' | egrep -o '.*Deceased' | sed -e 's/[^;]//g' | wc -c
Run Code Online (Sandbox Code Playgroud)
输出是2因为“Deceeded”位于第二列中。