공백없이 'ps'명령 출력 형식


11

ps실행중인 모든 프로세스의 특정 속성과 일부 속성을 가져 오는 다음 명령이 있습니다.

ps --no-headers -exo "uname,ppid,pid,etime,%cpu,%mem,args"

파싱 ​​할 수 있도록 CSV 형식으로 지정하고 싶습니다. 참고 구문 분석을 쉽게하기 위해 끝에 인수를 넣었습니다. ,다른 열에 의지가 있다고 생각하지 않습니다 . 틀린 경우 수정하십시오.

공백을 어떻게 제거합니까?

답변:


10

매뉴얼 페이지에서 :

-o format       user-defined format.
                format is a single argument in the form of a blank-separated or comma-separated list, which offers a
                way to specify individual output columns. The recognized keywords are described in the STANDARD FORMAT
                SPECIFIERS section below. Headers may be renamed (ps -o pid,ruser=RealUser -o comm=Command) as
                desired. If all column headers are empty (ps -o pid= -o comm=) then the header line will not be
                output. Column width will increase as needed for wide headers; this may be used to widen up columns
                such as WCHAN (ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm). Explicit width control
                (ps opid,wchan:42,cmd) is offered too. The behavior of ps -o pid=X,comm=Y varies with personality;
                output may be one column named "X,comm=Y" or two columns named "X" and "Y". Use multiple -o options
                when in doubt. Use the PS_FORMAT environment variable to specify a default as desired; DefSysV and
                DefBSD are macros that may be used to choose the default UNIX or BSD columns.

그래서 시도하십시오 :

/bin/ps -o uname:1,ppid:1,pid:1

이것을 정답으로 선택 하시겠습니까? @ jeff-schaller
Felipe Alvarez

5

처음 6 개의 필드는 공백 문자를 포함해서는 안되므로 (사용자 이름으로 허용하지 않는 한) 출력을 후 처리 할 수 ​​있습니다.

ps --no-headers -exo "uname,ppid,pid,etime,%cpu,%mem,args" | sed '
  s/[\"]/\\&/g
  s/  */,/;s/  */,/;s/  */,/;s/  */,/;s/  */,/;s/  */,"/
  s/$/"/'

여기에서 "s와 \s 를 이스케이프 한 후 마지막 필드 (args)를 인용하십시오 \.

다음과 같은 출력을 생성합니다.

stephane,3641,3702,10-00:20:24,0.1,0.3,"some cmd,and,args... VAR=foo\"bar"

2

sed와 함께 사용할 수 있습니다 ps. 그래서 당신이 원하는 것은 여기 있습니다 :-

ps --no-headers -exo "uname,ppid,pid,etime,%cpu,%mem,args" | sed 's/\ /,/g'

그러나 ps자체 출력에 많은 정보 가 있으므로 유용할지 궁금합니다 ,.


내가 언급했듯이, 나는 ,끝에 넣을 수있는 열을 하나만 선택했다고 생각 하지만,이 솔루션은 ,내가 원하지 않는 열에서 제거 할 것입니다.
치타

생성되는 출력을보고 그것이 바람직하다고 생각되면 알려주십시오 :) 특히 명령 열에 주목하십시오.
Oli

그것과 같습니다 tr ' ' ,. 당신은 아마 tr -s ' ' ,여기를 원할 것입니다.
Stéphane Chazelas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.