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 兩行
- BFAIL 與 FAIL 兩行
- 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欄。