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가 출력하는 내용으로 올바른 것은?

  1. AcellB FAIL 0.45와 cellD FAIL 0.31의 2줄
  2. BFAIL과 FAIL의 2줄
  3. CcellB와 cellD의 2줄
정답과 해설 보기

정답: C. cellB와 cellD의 2줄

awk는 각 줄을 공백으로 구분하여 필드로 나누고, 첫 번째를 $1, 두 번째를 $2처럼 나타내며, 줄 전체는 $0으로 나타냅니다. '$2 == "FAIL"'은 두 번째 필드가 FAIL인 줄을 고르는 조건이고, {print $1}은 그 줄의 첫 번째 필드를 표시하는 동작입니다. 조건에 맞는 것은 cellB와 cellD의 줄이므로 cellB와 cellD가 표시됩니다. awk는 연속된 공백을 하나의 구분으로 간주하므로, 공백 수가 고르지 않은 출력에서 열을 꺼낼 때 cut보다 다루기 쉬운 경우가 있습니다.

이 분야 연습하기 분야로 돌아가기

Linux와 커맨드 라인 기초의 다른 문제

  1. GNU의 find로 'find /data -name "*.log" -mtime +7 -size +100M'을 실행했을 때 찾아지는 파일에 대한 설명으로 올바른 것은?
  2. 응답하지 않게 된 프로세스를 멈출 때, 먼저 'kill 프로세스ID'를 사용하고 그래도 끝나지 않을 때만 'kill -9 프로세스ID'를 사용하는 것이 좋다고 한다. 그 이유로 올바른 것은?
  3. 터미널에서 시간이 걸리는 ./sim.sh를 실행하는 도중에, 같은 터미널에서 다른 명령을 쓰고 싶어졌다. Ctrl+Z를 누른 후 bg를 실행했을 때의 동작으로 올바른 것은?
  4. SSH로 접속한 서버에서 시간이 걸리는 처리를 './run.sh &'로 시작한 다음 접속을 끊었더니 처리도 멈춰 버렸다. 접속을 끊은 후에도 처리를 계속하게 하는 시작 방법으로 가장 적절한 것은?
  5. 위의 두 줄을 셸(shell)에서 실행했을 때 표시되는 문자로 올바른 것은?