약 1000개의 파일이 있고 각 파일의 첫 번째 필드가 특정 숫자와 일치하면 해당하는 세 번째 요소를 인쇄해야 합니다. 아래 숫자 7은 상수가 아니고 이전 스크립트의 출력을 기반으로 하기 때문에 변수를 전달하려고 하면 실패합니다.
$cat ${i} | head -14 | awk '$1 == "7" {print $3}'
$Supervisor
$blah=7
$cat ${i} | head -14 | awk '$1 == "${blah}" {print $8}'
비교에서 변수를 이스케이프/확장하기 위해 다른 조합을 사용해 보았지만 그 중 어느 것도 변수를 확장하지 못하는 것 같습니다 blah
.
답변1
가장 좋은 옵션은 아마도 awk
변수로 전달하는 것 입니다.-v
head -14 "$i" | awk -v blah="$blah" '$1 == blah {print $8}'
head
또는 해당 부분 없이 :
awk -v blah="$blah" 'NR > 14 {exit} $1 == blah {print $8}' "$i"