我有一个格式的csv(在Linux上使用Bash)
DN , MAC , Partition ,
123 , abc , xyz
321 , asd , asd
我可以使用awk使用
解析它eval MAC=($(awk -F "," '{print $1}' random.csv))
这是针对CSV中的每一列完成的,因此我可以单独调用DN[2]
,MAC[2]
等单独的手册并单独解析它们。
但是如何逐行解析csv?
例如:如果我呼叫DN
为123
,则还应返回相应的MAC
和Partition
。
答案 0 :(得分:10)
尝试循环:
while IFS=, read dn mac partition
do
echo "Do something with $dn $mac and $partition"
done < file
要选择记录,您可以使用案例陈述:
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
答案 1 :(得分:0)
使用awk
:
read -p "Gimme the DN integer >>> " i
awk -v i=$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
答案 2 :(得分:0)
你也可以试试这个
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