Solaris 9 - 단어 개수(wc) 명령이 "grep -v and ps"를 사용하여 잘못된 출력을 제공합니다.

Solaris 9 - 단어 개수(wc) 명령이 "grep -v and ps"를 사용하여 잘못된 출력을 제공합니다.

내가 사용할 때'ps', 'egrep'그리고'화장실'프로세스 수를 계산하는 명령을 실행하면 잘못된 값이 표시됩니다. 명령을 실행하고 있어요"솔라리스 9"기계.

MyServer $ ps -fu root | egrep -v 'bash|ksh|ssh|ef|mailx|nohup|defunct|ps|sh|FND'
     UID   PID  PPID  C    STIME TTY      TIME CMD
 root 16267 16171  0   Jan 28 ?        0:18 xyz
 root 16269 16171  0   Jan 28 ?        0:07 abc
 root 16268 16171  0   Jan 28 ?        0:07 ghi
MyServer $

출력에는 4줄(프로세스 3개 + 제목)만 표시됩니다. 하지만 아래 명령을 사용하면 다음과 같이 출력이 반환됩니다.5

MyServer $ ps -fu root | egrep -v 'bash|ksh|ssh|ef|mailx|nohup|defunct|ps|sh|FND' | wc -l
       5

반면에 출력을 파일에 에코하고 줄 수를 계산하면 완벽하게 작동합니다.

MyServer $ ps -fu root | egrep -v 'bash|ksh|ssh|ef|mailx|nohup|defunct|ps|sh|FND' >temp && cat temp | wc -l
       4

"egrep" 및 "egrep -v"와 관련된 추가 설명:

"-v" 옵션 없이 "egrep"이 작동하는 이유는 무엇입니까? 하지만 "-v"가 없다면?

MyServer$ ps -fu root | egrep '20755|13800'
 root 20755 20751  0 12:14:29 pts/5    0:00 more -s /tmp/mpWGa4mO
 root  1223 26407  0 12:57:28 pts/15   0:00 egrep 20755|13800
MyServer$ ps -fu root | egrep '20755|13800' | wc -l
       2
MyServer$

MyServer$ ps -fu root | egrep -v 'usr|apps|sql|sh'
     UID   PID  PPID  C    STIME TTY      TIME CMD
 root  3448 26407  0 12:57:42 pts/15   0:00 ps -fu root
 root 20755 20751  0 12:14:29 pts/5    0:00 more -s /tmp/mpWGa4mO
MyServer$ ps -fu root | egrep -v 'usr|apps|sql|sh' | wc -l
       4
MyServer$

답변1

wc -l개행 문자 수를 계산합니다. 의미 있는 데이터가 포함된 줄보다 출력에 더 많은 줄 바꿈이 있을 수 있습니다.

예를 들어. 한 줄만 포함하고 개행 문자는 포함하지 않는 파일을 만듭니다.

$ cat > test.txt
hello # Type CTRL+D (2 times are necessary on my system)

$ wc -l < test.txt
0

관련 정보