csv 파일을 반복하고 열의 모든 고유 요소를 배열에 저장합니다.

csv 파일을 반복하고 열의 모든 고유 요소를 배열에 저장합니다.

매우 큰 csv 파일을 구문 분석하고 첫 번째 열의 값을 기반으로 해당 내용을 포함하는 많은 하위 파일을 만들고 있습니다. 지금까지 내가 한 일은 배열을 수동으로 선언하는 것이었습니다.

declare -a arr=(
"Value 1"
"Value 2"
)

그런 다음 이 배열을 반복하고 내가 관심 있는 정보로 미니 csv 파일을 생성하는 동시에 출력 csv 파일의 이름을 밑줄로 공백을 바꾸도록 변경합니다.

for i in "${arr[@]}"
do 
    NAME=${i// /_}
    echo $header > "$outputpath/$NAME.csv"
    grep "^$i," "$fixed_file" | cut -d ',' -f 4,6 >> "$outputpath/$NAME.csv"
done

첫 번째 단계를 자동화하는 방법이 있나요? 즉, 원본 csv 파일을 반복하여 arr에 열 1의 모든 고유 값을 채울 수 있나요?

답변1

일방 통행:

declare -A arr
while IFS=, read -r one rest
do
  arr[$one]=1
done < input.csv

그런 다음 키를 순환합니다.

for i in "${!arr[@]}"
do
  #...
done

관련 정보