Awk
awk + 如何擷取兩個字元的第三個欄位
從
ps ax
我們得到以下輸出ps ax PID TTY STAT TIME COMMAND 1 ? Rs 611:56 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 2 ? S 4:46 [kthreadd] 3 ? R 3499:33 [ksoftirqd/0] 5 ? S< 0:00 [kworker/0:0H] 7 ? S 16:24 [migration/0] 8 ? S 0:00 [rcu_bh] 9 ? S 0:00 [rcuob/0] 10 ? S 0:00 [rcuob/1] 11 ? S 0:00 [rcuob/2] 12 ? S 0:00 [rcuob/3] 13 ? S 0:00 [rcuob/4] 14 ? S 0:00 [rcuob/5] 15 ? S 0:00 [rcuob/6] 16 ? S 0:00 [rcuob/7] 17 ? S 0:00 [rcuob/8] 18 ? S 0:00 [rcuob/9] 19 ? S 0:00 [rcuob/10]
所以我們想在第三個欄位上擷取 R 例如
ps ax | awk '$3 ~ /R/ { print }' 139 ? R 1935:31 [rcuos/1]
現在我們希望兩者都在第三個欄位中擷取 R 和 D
在這種情況下,為了在第三個欄位上擷取 ether R 或 D 應該是什麼語法?
任何一個
ps -ax | awk '$3 ~ /R|D/ '
或者
ps -ax | awk '$3 == "R" || $3 == "D" '
請注意,隱式動作是
您可以使用
o
選項ps
來更改或選擇您需要的欄位ps -a -o stat,pid,args | awk '$1 ~ /[DR]/ { $1="" ; print } '