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 }'