在bash中parsingCSV并分配variables

我有一个csv的格式(在Linux上工作Bash)

DN , MAC , Partition , 123 , abc , xyz 321 , asd , asd 

我可以使用awkparsing

 eval MAC=($(awk -F "," '{print $1}' random.csv)) 

这是为CSV中的每一列完成的,因此我可以单独调用DN[2]MAC[2]等,这些是手动的,并且可以单独parsing它们。

但是,我怎么可以逐行parsingCSV? 例如:如果我要求DN123 ,则还应该返回相应的MACPartition

Solutions Collecting From Web of "在bash中parsingCSV并分配variables"

尝试循环:

 while IFS=, read dn mac partition do echo "Do something with $dn $mac and $partition" done < file 

要选择一个记录,你可以使用一个case语句:

 P2=123 while IFS=, read dn mac partition do case $dn in ($P2) echo echo "Do something with $dn $mac and $partition" ;; (*) echo "Do nothing" ;; esac done < file 

使用awk

 read -p "Gimme the DN integer >>> " i awk -vi=$i -F' , ' ' NR>1{ dn[NR]=$1 mac[NR]=$2 partition[NR]=$3 } END{ for (a=2; a<=NR; a++) if (i == dn[a]) print dn[a], mac[a], partition[a] } ' file.txt 

你也可以试试这个

file1存储您要检索信息的所有DN

 #parse.awk BEGIN { FS="," ; OFS= "\t"} FNR==NR{ a[$1]; next } $1 in a { print $1,$2,$3} 

调用awk -f parse.awk file1 csvfile.csv