Linux와 커맨드 라인 기초
$ cat result.txt
cellA PASS 0.12
cellB FAIL 0.45
cellC PASS 0.08
cellD FAIL 0.31
$ awk '$2 == "FAIL" {print $1}' result.txt위의 조작에서 마지막 awk가 출력하는 내용으로 올바른 것은?
- AcellB FAIL 0.45와 cellD FAIL 0.31의 2줄
- BFAIL과 FAIL의 2줄
- CcellB와 cellD의 2줄
정답과 해설 보기
정답: C. cellB와 cellD의 2줄
awk는 각 줄을 공백으로 구분하여 필드로 나누고, 첫 번째를 $1, 두 번째를 $2처럼 나타내며, 줄 전체는 $0으로 나타냅니다. '$2 == "FAIL"'은 두 번째 필드가 FAIL인 줄을 고르는 조건이고, {print $1}은 그 줄의 첫 번째 필드를 표시하는 동작입니다. 조건에 맞는 것은 cellB와 cellD의 줄이므로 cellB와 cellD가 표시됩니다. awk는 연속된 공백을 하나의 구분으로 간주하므로, 공백 수가 고르지 않은 출력에서 열을 꺼낼 때 cut보다 다루기 쉬운 경우가 있습니다.