嗨,朋友们,
我需要在一个文件中搜索两种模式。 例如模式 1 和模式 2,我想要的正是那个特定的词。根据此命令的成功或失败,我将使用"IF"执行两个操作。
例。
if (condition)
条件是评估 egrep 命令,用于搜索文件中的两个模式。仅当在文件中找到这两种模式时,条件才应为 true ($? = 0)
。否则它应该失败。
但是实际的egrep
命令是在模式之间执行OR功能,我希望在模式之间执行AND逻辑。请帮助我。
我想你可以在shell脚本中连接两个grep,如下所示:
#!/bin/bash
if egrep -q "pattern1" filename && egrep -q "pattern2" filename; then
exit 0
else
exit 1
fi
-q
确保没有来自egrep
的输出(如果找到模式,它只返回 true(,&&
确保仅在文件中找到两种模式时才返回exit 0
。
这在逻辑上是模糊的。如果您想检查文件中的两种模式,无论它们是否在同一行中,您可以这样做
grep 'pattern1' somefile && grep 'pattren2' somefile
如果您希望两种模式出现在同一行中
grep 'pattern1' somefile | grep 'pattern2'
以下内容为我解决了:
要求:在不同行上搜索两种不同的模式,并根据两种模式搜索的 AND 操作采取行动。
法典:
grep -q "pettern1" file1 && grep -q "pettern2" file1
if [ $? -ne 0 ]
then
echo "Both patterns are not found"
else
echo "Both patterns are found"
fi
注意:两个模式在同一文件中的不同行上
egrep -z -q 'pattern1.*pattern2|pattern2.*pattern1'
如果文件中同时存在这两种模式,它将返回 true,否则返回 false。