현재 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
두 개의 변수만 선택하지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다.
답변1
bash read
명령은 한 줄을 필드 배열로 분할할 수 있습니다.
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