[英]How to read in csv file to array in bash script
我編寫了以下代碼,以將我的csv文件(具有固定的列數但沒有固定的行數)作為數組讀入腳本。 我需要它是一個shell腳本。
usernames x1 x2 x3 x4
username1, 5 5 4 2
username2, 6 3 2 0
username3, 8 4 9 3
我的密碼
#!/bin/bash
set oldIFS = $IFS
set IFS=,
read -a line < something.csv
我使用的另一個選擇是
#!/bin/bash
while IFS=$'\t' reaad -r -a line
do
echo $line
done < something.csv
對於這兩者,我嘗試了一些測試代碼來查看數組行的大小,並且第一個似乎是10,但是數組僅輸出用戶名。 對於第二個,我似乎得到的大小為0,但數組輸出整個csv。
非常感謝幫助!
您可以考慮將AWK
與FS
變量中的正則表達式一起使用,如下所示:
awk 'BEGIN { FS=",?[ \t]*"; } { print $1,"|",$2,"|",$3,"|",$4,"|",$5; }'
或這個
awk 'BEGIN { FS=",?[ \t]*"; OFS="|"; } { $1=$1; print $0; }'
(需要$1=$1
才能用新的OFS重建$ 0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.