私は現在csvファイルを読み取り、各行を繰り返して、後で使用する特定の列の変数を定義しています。
私のCSVファイルが次のようになっているとしましょう。
Column1,Column2,Column3,Column4,Column5
String1,String2,String3,String4,String5
...
while IFS= read -r line
do
VARIABLE_1=$(awk -F"," '{print $2}')
VARIABLE_2=$(awk -F"," '{print $4}')
curl -XPUT <url_1>/2
curl -XPUT <url_2>/4
done
何らかの理由でVARIABLE_1
2つの変数だけを選択しません。どんな助けでも大変感謝します。
答え1
bashread
コマンドは、1行をフィールド配列に分割できます。
while IFS=, read -r -a fields; do
var_1=${fields[1]} # bash arrays are indexed from zero
var_2=${fields[3]}
# ... use those variables
done < file.csv
それじゃない本物CSVパーサー:引用符付きフィールドのコンマを考慮しません。 bash バージョン 5.1 ではできます
BASH_LOADABLES_PATH=${BASH/bin/lib}
enable -f csv csv
while IFS= read -r line; do
csv -a fields "$line"
# ... use the fields array
done < file.csv
CSV ファイルのヘッダー行を無視するには:
{
read headers
while IFS= read -r line; do
# do stuff
done
} < file.csv