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]', 줄 끝: '$' |