[英]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呢? 例如:如果我呼叫DN
為123
,則還應返回相應的MAC
和Partition
。
嘗試循環:
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.