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. BFAIL 與 FAIL 兩行
  3. CcellB 與 cellD 兩行
查看答案與解析

正確答案:C. cellB 與 cellD 兩行

awk 把每一行以空白切分成欄位,第1欄寫作 $1,第2欄寫作 $2,整行則寫作 $0。「$2 == "FAIL"」是選出第2欄為 FAIL 的行的條件,{print $1} 則是顯示該行第1欄的動作。符合條件的是 cellB 與 cellD 那兩行,所以顯示 cellB 與 cellD。awk 會把連續的空白視為一個分隔,因此在取出空白數不一致的輸出欄位時,有時比 cut 更好用。

  • A. 這是沒有寫 {print $1} 時的結果。省略動作時,會顯示符合條件的整行($0)。
  • B. 這是把欄位從0開始數的讀法。awk 的 $1 是第1欄,$0 表示整行。
  • C. 正確。顯示第2欄為 FAIL 的行的第1欄。
練習這個領域 前往領域頁面

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 中執行上面兩行時,顯示的字元是下列何者?