检查文件是否包含特定模式?

检查文件是否包含特定模式?
#!/usr/bin/expect -f

ps

ps -ef > test.txt

现在,如果我想检查 test.txt 中是否存在某些关键字,我们该怎么做?

比方说“apache”或“fast”。

这里可以使用if语句吗?如果可以,怎么用?

答案1

首先,第一行 shebang 行不是您想要的脚本。期望 shell 的用途有限,这不是其中之一

第一行应该是这样的

#!/bin/bash

在你的情况下

然后

ps -ef > test.txt
grep -e fast -e apache test.txt

将打印包含这些单词中的任何一个的所有行。

或者您可以跳过写入文件步骤并在一行中执行此操作,如下所示:

ps -ef | grep -e fast -e apache 

编辑条件检查:

ps -ef | grep -e fast -e apache | grep -v grep > dev/null; result=${?}
if [ ${result} -eq 0 ]
then
  echo "Found one or more occurrences of 'apache' and/or 'fast'"
else
  echo "Searched strings were not found"
fi

答案2

你可以在这里声明一个数组

#!/bin/bash

string=('fast' 'apache')

ps -ef > test.txt

for i in "$string[@]"
do
    grep "$i" test.txt
done

或者你可以直接在行中执行,ps只保存那些流程

#!/bin/bash

string=('fast' 'apache')

for i in "$string[@]"
do
    ps -ef | grep "$i" > ps_output_of_$i.txt
done

试一下

相关内容