awk 값을 변수로 저장

awk 값을 변수로 저장

나는 명령을 사용한다

varioutput=$(awk '{print $j}' OFS=, data/damper.test_temp1.csv)

,로 구분된 행의 여러 값 중 j번째 값을 추출하고 싶기 때문입니다. 하지만 $varioutput을 사용하고 싶을 때 항상 전체 라인을 제공합니다.

내가 뭘 잘못했나요?

사실 제가 사용하고 싶은 건

for ((j=1; j<=20; j++)); do
         varioutput=$(awk -F, -v jj="$j" '{print $jj}'  data/damper.test_temp1.csv)
done

그럼 이제 위와 같이 사용해야 할지 헷갈리는데요? 오류가 발생하지만 이렇게 사용하면

for ((j=1; j<=20; j++)); do
         varioutput=$(awk -F, '{print $j}'  data/damper.test_temp1.csv)
done

나는 아직도 그 말을 이해합니다.

이제 해결책은 다음과 같습니다

for ((j=1; j<=20; j++)); do
         varioutput=$(awk -F, -v k=$j '{print $k}'  data/damper.test_temp1.csv)
done

답변1

입력 필드 구분자가 아닌 출력 필드 구분자를 지정했습니다. 대신 다음을 사용하십시오.

varioutput=$(awk -F, '{print $j}' data/damper.test_temp1.csv)

(또는 FS대신 설정 OFS).

j또한 위의 내용은 자리 표시자이고 이를 적절한 값(예: )으로 정적으로 대체한다고 가정합니다 print $4.


스크립트에서 다른 변수를 사용하려면 해당 변수를 전달해야 합니다.awk

예를 들어, RANK쉘 변수 의 경우

varioutput=$(awk -F, -v j=$RANK '{print $j}' data/damper.test_temp1.csv)

일반적으로 이 예와 같이 소규모 스크립트 세트에 AWK를 사용하기 시작하면 더 많은 스크립트에 AWK를 사용하는 것이 좋습니다.

관련 정보