특정 필드를 기반으로 하는 grep/awk 특정 라인은 awk에서 ksh 변수를 사용합니다.

특정 필드를 기반으로 하는 grep/awk 특정 라인은 awk에서 ksh 변수를 사용합니다.

다음 입력 파일이 있습니다.file.txt에(파이프로 구분됨)

3345:tyg|rty|27|0|0|ty6|{89|io|}62|0
3346:tyg|rtyuio|63|0|1|ty6|{89|gh|}45|0
3347:tyu|ray|24|0|0|ty6|{89|uh|}27|0
3348:tyg|rtoy|93|0|1|ty6|{89|yh|}1|0
3349:tyo|rtert|28|0|0|ty6|{89|gh|}27|0

내 출력이 다음과 같도록 }279 번째 필드 값이 구분 기호로 있는 행만 가져오고 싶습니다 .'|'

3347:tyu|ray|24|0|0|ty6|{89|uh|}27|0
3349:tyo|rtert|28|0|0|ty6|{89|gh|}27|0

다음 명령은 잘 작동합니다.

awk -F"|" '{ if ($9 == "}27") print $0 }' file_in.txt

하지만 대신 쉘 변수를 사용하고 싶습니다 "}27".

taskid="}27"    
awk -v tid="$taskid" -F"|" '{ if ($9 == "}tid") print $0 }' file_in.txt

이 명령에 어떤 문제가 있는지 알려주세요. 동일한 목적을 달성하는 명령에 대한 다른 제안이 있으면 감사하겠습니다.

답변1

노력하다

taskid="}27"    
awk -v tid="$taskid" -F"|" '$9 == tid' file_in.txt
  • 기본 동작은 라인을 인쇄하는 것입니다.
  • 이 변수를 포함할 필요는 없습니다.

관련 정보