매우 큰 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