簡體   English   中英

如何在bash腳本中讀取csv文件以數組

[英]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。

非常感謝幫助!

您可以考慮將AWKFS變量中的正則表達式一起使用,如下所示:

 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.

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