簡體   English   中英

在bash中解析CSV並分配變量

[英]Parse CSV in bash and assign variables

我有一個格式的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呢? 例如:如果我呼叫DN123 ,則還應返回相應的MACPartition

嘗試循環:

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 -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

你也可以試試這個

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM