Solaris 9 - 字数统计 (wc) 命令使用“grep -v 和 ps”给出错误的输出

Solaris 9 - 字数统计 (wc) 命令使用“grep -v 和 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”相关的更多描述:

为什么“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

相关内容