4

我有一个格式的 csv (Working on Bash on linux)

DN , MAC , Partition ,  

123 , abc , xyz  
321 , asd , asd 

我可以通过使用 awk 来解析它

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

这是针对 CSV 中的每一列完成的,因此我可以单独调用DN[2]MAC[2],这是手动的并单独解析它们。

但是如何按行解析 csv?例如:如果我调用DNis 123,对应的MACandPartition也应该返回。

4

3 回答 3

11

尝试循环:

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
于 2013-03-11T23:01:51.710 回答
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
于 2013-03-11T23:15:36.483 回答
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

于 2013-03-12T07:31:11.880 回答