当我使用'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”相关的更多描述:
为什么“egrep”在没有“-v”选项的情况下可以正常工作?但不带“-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