(완료)perl] ps -ef 명령 결과 저장 파서 만들기
ps -ef를 수행한 후 결과를 줄 단위로 split 하여 각각 항목별로 변수에 저장하는 스크립트를 만들었습니다.
ps -ef 결과]
% ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Nov12 ? 00:00:07 init [3]
root 2 1 0 Nov12 ? 00:00:00 [migration/0]
root 3 1 0 Nov12 ? 00:00:00 [posix_cpu_timer]
......
script]
#!usr/bin/perl
$Result = `ps -ef`;
@splitResult = split('\n', $Result);
if($splitResult[1] =~ /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/)
{
$UID = $1;
$PID = $2;
$PPID = $3;
$TIME = $7;
$CMD = $8;
print "PID=$PID, CMD=$CMD\n";
}
대충 위와 같이 쓰고 있는데 정규표현식을 '(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/' 이렇게 만든것이 영 마음에 안드네요. '(\S+)\s+{8}' 이런 형태도 시도해봤는데 원하는 결과가 안나와서 여쭤봅니다. 이런 경우에 정규표현식을 좀 더 유연하게 만들 수 있는 방법이 있을까요?
그냥 split을 한 번 더
그냥 split을 한 번 더 써주시면 될 듯
이렇게 해보세요.
결과
감사합니다^^
또 배우고 갑니다
댓글 달기