4

私はフォーマットの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例: isを呼び出すと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 に答える