ファイルに特定のパターンが含まれていることを確認しますか?

ファイルに特定のパターンが含まれていることを確認しますか?
#!/usr/bin/expect -f

ps

ps -ef > test.txt

今、test.txtに特定のキーワードがあるかどうかを確認したい場合はどうすればよいですか?

たとえば、「apache」または「fast」です。

ここでif文を使用できますか?それでは、どのように使用しますか?

答え1

まず、最初のshebang行は目的のスクリプトではありません。シェルの用途は限定的であると予想される。これはその一つではありません。

最初の行は次のようにする必要があります

#!/bin/bash

あなたの場合

それから

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

この単語を含むすべての行を印刷します。

または、ファイルフェーズへの書き込みをスキップして、次のように1行で実行できます。

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

試してみてください

関連情報