BASH에서 csv 파일을 어떻게 2 차원 배열로 읽습니까? 스크립트는 가변 개수의 행과 열로 csv 파일을 가져올 수있을 정도로 충분히 동적이어야합니다. 예를 들어BASH에서 csv 파일을 어떻게 2 차원 배열로 읽습니까?
, 나는
AVERAGE STDEV MAX
17 18 19
또는
AVERAGE STDEV MAX MIN
17 18 19 1
BASH에서 csv 파일을 어떻게 2 차원 배열로 읽습니까? 스크립트는 가변 개수의 행과 열로 csv 파일을 가져올 수있을 정도로 충분히 동적이어야합니다. 예를 들어BASH에서 csv 파일을 어떻게 2 차원 배열로 읽습니까?
, 나는
AVERAGE STDEV MAX
17 18 19
또는
AVERAGE STDEV MAX MIN
17 18 19 1
2 차원 배열을 시뮬레이트하는 한 가지 방법은 행을 1 차원 배열의 문자열로 유지하고 각 반복마다 압축을 해제하는 것입니다. 데이터에 나타나지 않는 적절한 구분 기호를 선택해야합니다. 다음은 시뮬레이션 2 차원의 값 반복의 간단한 예입니다
name, start date, visits, games, balance
"Williamson, Dennis", "January 11, 2007", 12, 42, 17000
: 당신이 CSV를 언급 이후, 나는 쉼표를 사용합니다,하지만이 포함 된 쉼표와 같은 데이터를 처리 할 수있을만큼 똑똑하지 않습니다 차원 배열 :
# avg, stddev, max, min
data_array=(
"17,18,19,1"
"12,14,16,2"
"6,8,10,3"
)
saveIFS=$IFS
for row in ${data_array[@]}
do
IFS=","
cols=($row)
IFS=$saveIFS
for col in ${cols[@]}
do
newval=$(do_something $col)
done
done
배열의 내용을 변경하는이 가능합니다 : 당신이 볼 수 있듯이
rowidx=2
colidx=2
IFS=","
cols=(${data_array[rowidx]})
cols[colidx]=$some_value
data_array[rowidx]="${cols[*]}"
IFS=$saveIFS
, 그것은 빠르게 복잡해진다 내가 언급하지 않은 개는 많이 있습니다 에드. 파이썬을 사용하십시오.
배쉬는 하나의 차원 배열을 지원처럼 보이는 csv 파일이있는 경우.
예 27.17
에서 그리고이 숙제 같은 소리 않습니다 동의 : 2 차원의 에뮬레이션은 고급 Bash 스크립팅 가이드에 twodim.sh을 확인해 볼 수 있습니다.
지금까지 무엇을 얻었습니까? – samoz
이것은 bash (2 차원 배열을 직접 지원하지도 않음)의 경우와 비슷합니다. Perl이나 Python을 사용하지 않는 이유는 무엇입니까? –