AWK를 사용하여 .CSV 파일에서 숫자 추출

AWK를 사용하여 .CSV 파일에서 숫자 추출

숫자를 추출해야 하는 .CSV 파일이 있습니다. 파일 예:

#File of numbers
1,2,3,4,5
6,7,8,9,10

awk(또는 다른 유틸리티)를 사용하여 첫 번째와 두 번째 숫자를 추출하고 변수에 저장하여 bash 스크립트에서 계산을 수행하고 싶습니다. #으로 시작하는 첫 번째 줄을 제외하고 싶습니다.

계산을 수행한 후 세 번째 숫자를 추출하여 계산을 계속하고 모든 숫자를 얻을 때까지 반복하고 싶습니다. 어떻게 시작해야 할지 모르겠는데 도움이 필요합니다. 세 번째, 네 번째 등을 얻으려면 awk 스크립트를 루프에 넣어야 한다는 것을 알고 있지만 awk 스크립트를 작성하는 방법이 혼란스럽습니다.

답변1

실제 CSV 파서를 사용하십시오.:

#!/bin/bash

csvcut -c 1,2 -d, file.csv |
while IFS=, read -r c1 c2; do
    echo $((c1 * c2)) # do some arithmetic with variables c1 & c2
done

확인하다csvkit

답변2

이 문제를 해결하는 유일한 방법은 awk와 쉘 사이를 오가며 AWK 스크립트가 다음 단계를 위한 쉘 코드를 생성하도록 하는 것입니다. 그러나 이것은 나에게 너무 복잡하게 들린다. 또한 모든 것을 awk로 옮기는 것이 좋습니다(또는 여기에서도 Perl이 허용됩니까?)

답변3

이것은 bash다른 쉘에서는 매우 간단합니다.

while IFS=, read a b c d e ; do
  your_stuff
  done < your_csv_file
  1. IFS는 입력 필드 구분 기호입니다. 명령을 read쉼표로만 설정하십시오.

  2. 한 번에 5개의 변수를 읽습니다.

  3. 새로운 쉘 변수 $a $b $c $d $e를 사용하여 작업을 완료하세요.

  4. while키워드 다음에 루프 끝에서 입력 리디렉션을 정의해야 합니다 done.

관련 정보