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番目を $1、2番目を $2 のように表し、行全体は $0 で表します。「$2 == "FAIL"」は2番目のフィールドが FAIL の行を選ぶ条件で、{print $1} はその行の1番目のフィールドを表示する動作です。条件に合うのは cellB と cellD の行なので、cellB と cellD が表示されます。awk は続いた空白をまとめて1つの区切りとみなすので、空白の数がそろっていない出力の列を取り出すときに cut より扱いやすいことがあります。

  • A. {print $1} を書かないときの結果です。動作を省くと、条件に合った行全体($0)が表示されます。
  • B. フィールドを0から数えたときの読み方です。awk の $1 は1番目のフィールドで、$0 は行全体を表します。
  • C. 正しい。2番目のフィールドが FAIL の行の、1番目のフィールドが表示されます。
この分野を解く 分野ページへ

Linuxとコマンドラインの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

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. 上の2行をシェルで実行したとき、表示される文字として、正しいものはどれか。