grep을 사용하여 Linux 명령 출력에서 ​​특정 열만 추출하는 방법

grep을 사용하여 Linux 명령 출력에서 ​​특정 열만 추출하는 방법

grep을 사용하여 Linux 명령 출력에서 ​​특정 열만 보고 싶습니다. 이 명령을 사용하면 다음과 같은 결과가 나타납니다.

$ ps ax | grep sshd | grep  'priv' | sort -k 3
     4886 ?        Ss     0:00 sshd: vpnuser002 [priv]
      10637 ?        Ss     0:00 sshd: vpnuser003 [priv]
      10651 ?        Ss     0:00 sshd: vpnuser003 [priv]
      11594 ?        Ss     0:00 sshd: vpnuser003 [priv]
      11669 ?        Ss     0:00 sshd: vpnuser003 [priv]
      11817 ?        Ss     0:00 sshd: vpnuser003 [priv]
       9680 ?        Ss     0:00 sshd: vpnuser003 [priv]
       4034 ?        Ss     0:00 sshd: vpnuser006 [priv]

마지막 열만 보려면 명령에서 무엇을 변경해야 합니까? 이와 같이:

    sshd: vpnuser002 [priv]
    sshd: vpnuser003 [priv]
    sshd: vpnuser003 [priv]
    sshd: vpnuser003 [priv]
    sshd: vpnuser003 [priv]
    sshd: vpnuser003 [priv]
    sshd: vpnuser003 [priv]
    sshd: vpnuser006 [priv]

저는 우분투 리눅스를 사용하고 있습니다.

답변1

o command제목 없이 명령 열을 출력 h한 다음 grep특정 출력을 출력할 수 있습니다.

ps axho command | grep '^sshd:.*\[priv\]$' | sort

답변2

이와 같이:

$ <INPUT> | grep -o '\bsshd: .*\[priv\]$'

또는

ps -C sshd all | grep -o '\bsshd: .*\[priv\]$'

산출

sshd: vpnuser002 [priv]
sshd: vpnuser003 [priv]
sshd: vpnuser003 [priv]
sshd: vpnuser003 [priv]
sshd: vpnuser003 [priv]
sshd: vpnuser003 [priv]
sshd: vpnuser003 [priv]
sshd: vpnuser006 [priv]

정규식 일치는 다음과 같습니다.

마디 설명하다
\b 단어 문자와 비단어 문자 사이의 경계
sshd: 'sshd:'
.* \n을 제외한 모든 문자(0회 이상(최대한 많이 일치))
\[priv\]$ '[priv]', 줄 끝: '$'

관련 정보