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를 모두 캡처하려고 합니다.

이 경우 세 번째 필드에서 에테르 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 } '

관련 정보