grep命令的多次使用

grep命令的多次使用,grep,Grep,有人能说出这句话的真正含义吗??这里多次使用grep命令 #chkCount=`ps -aef | grep -i "File_Transfer.sh"|grep -v grep| wc -l` 此行列出了所有正在运行的进程和筛选器行,其中包括“File_Transfer.sh” 然后进一步过滤输出以删除包含“grep”的行,因为grep命令本身将显示为一个正在运行的进程,文本为“File_Transfer.sh” wc-l计算找到的行数。多次使用grep(在这样的管道组合中)就像一个两级过滤

有人能说出这句话的真正含义吗??这里多次使用grep命令

#chkCount=`ps -aef | grep -i "File_Transfer.sh"|grep -v grep| wc -l`

此行列出了所有正在运行的进程和筛选器行,其中包括“File_Transfer.sh”

然后进一步过滤输出以删除包含“grep”的行,因为grep命令本身将显示为一个正在运行的进程,文本为“File_Transfer.sh”


wc-l计算找到的行数。

多次使用grep(在这样的管道组合中)就像一个两级过滤器;从第一个实例传递的任何行都将根据第二个实例的参数再次过滤。在本例中,
ps-aef
的结果通过管道传输到grep,grep对“File_Transfer.sh”进行不区分大小写的搜索;然后,grep输出的所有行再次被输入到grep,grep会传递所有不包含
grep
(-v表示“反向匹配”,查找不匹配的内容,而不是匹配的内容)到wc——最后,最终结果(出现次数)被分配给变量chkCount。

让我们逐个细分。首先,该命令将被注释掉,因此在删除起始的
#

命令ps-aef | grep-i“File_Transfer.sh”| grep-v grep | wc-l的输出将存储在变量
chkCount

grep-i“File\u Transfer.sh”
查找包含“File\u Transfer.sh”的行,但grep将忽略字符串的大小写。这意味着grep将匹配“File\u Transfer.sh”、“File\u Transfer.sh”或任何其他组合

grep-v grep
将匹配任何不包含单词
grep
的行
-v
反转匹配。这样做的目的是消除您发出的命令。换句话说,
ps
将列出一个名为
File_Transer.sh
的进程,它将列出您的命令
ps-aef | grep-i“File_Transfer.sh”| grep-v grep | wc-l
grep-v
将忽略
ps-aef | grep-i“File_Transfer.sh”| grep-v grep | wc-l
并只匹配任何匹配的进程
File_Transfer.sh


最后,
wc-l
将计算送入
wc
的行数。因此,结果将是与“File_Transfer.sh”匹配的正在运行的进程数。

谢谢您的回答……您还可以帮助我在下面的一行中--如果test$#=1&&test-e$1
chkCount=`ps -aef | grep -i "File_Transfer.sh"|grep -v grep| wc -l`