awk + ​​2文字で構成される3番目のフィールドをキャプチャする方法

awk + ​​2文字で構成される3番目のフィールドをキャプチャする方法

我々は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]

たとえば、3番目のフィールドでRをキャプチャしたいとします。

 ps ax | awk '$3 ~ /R/ { print }'
   139 ?        R    1935:31 [rcuos/1]

3番目のフィールドでRとDの両方をキャプチャしようとしています。

この場合、3番目のフィールドでエーテルRまたはDをキャプチャするにはどの構文を使用する必要がありますか?

ベストアンサー1

誰でも

ps -ax | awk '$3 ~ /R|D/ '

または

ps -ax | awk '$3 == "R" || $3 == "D" '

暗黙的な操作は次のとおりです。print


oオプションを使用して、ps必要なフィールドを変更または選択できます。

ps -a -o stat,pid,args | awk '$1 ~ /[DR]/ { $1="" ; print } '

おすすめ記事