awk를 사용하여 IFS 변수를 환경 변수로 설정

awk를 사용하여 IFS 변수를 환경 변수로 설정

while 루프 변수와 파이프를 사용하여 변수를 awk로 설정하는 방법은 무엇입니까?

이것은 내 현재 코드입니다. 여러 가지 접근 방식을 시도했지만 답을 찾을 수 없는 것 같습니다.

while IFS= read -r var
do
MyNewVariable= ($var | awk '{print $1}')

나는 올바른 줄을 받고 있다는 것을 알고 있지만 새 변수 줄에서 잘못된 명령을 받고 있습니다. 가능합니까?

답변1

당신이 여기서 무엇을 요구하고 있는지는 매우 불분명합니다. 하지만 저는 그런 일을 많이 할 것입니다. 다음 사항을 염두에 두고 질문을 수정하시기 바랍니다.

첫째..읽기 부분

$var | awk '{print $1}'

그것이 하는 일은 "var" 값의 내용을 해석하고 명령을 실행하고 이를 awk로 파이프한 다음 첫 번째 작업을 인쇄하는 것뿐입니다. $var의 내용이 유효한 명령이 아닐 가능성이 높으므로 실패할 수 있습니다.

시도에 대한 올바른 구문은 다음과 같습니다.

command | while IFS= read -r var; do
    echo $var
done

명령의 출력을 처리하려면 다음 중 하나를 수행하십시오.

while IFS= read -r var; do
    echo $var
done < input_file

파일의 내용을 처리하려는 경우.

그러나 실제로 "while" 구조를 래핑하는 것은 의미가 없습니다. 다음과 같이 쉽게 수행할 수 있기 때문입니다.

command | awk '{ print $1 }'

또는

awk '{ print $1 }' < file

awk에서 사용할 변수를 설정하려면 다음을 수행하십시오.

awk -v foo=$var '{ print foo }'

awk에서 IFS를 설정할 수도 있습니다.

awk 'BEGIN { FS=":" } { print $1 }'

관련 정보