朋友们,
我需要在文件中搜索两种模式。防爆。 pattern1 和 pattern2 我想要那个特定的单词。根据此命令的成功或失败,我将使用“IF”进行两次操作。
例如
if (condition)
条件是评估egrep命令以搜索文件中的两个模式。
仅当在文件中找到两个模式时,条件才应为真($? = 0)
。否则它应该失败。
但实际的egrep
命令在模式之间执行 OR 功能,我希望模式之间有 AND 逻辑。请帮帮我。
答案 0 :(得分:1)
我想你可以在shell脚本中连接两个greps,如下所示:
#!/bin/bash
if egrep -q "pattern1" filename && egrep -q "pattern2" filename; then
exit 0
else
exit 1
fi
-q
确保egrep
没有输出(如果找到模式,则返回true),&&
确保仅返回exit 0
如果在文件中找到两个模式。
答案 1 :(得分:0)
这在逻辑上是模糊的。如果要检查文件中的两种模式,无论它们是否在同一行,您都可以
grep 'pattern1' somefile && grep 'pattren2' somefile
如果您希望两个模式存在于同一行
grep 'pattern1' somefile | grep 'pattern2'
答案 2 :(得分:0)
以下为我解决了问题:
要求:在不同的行上搜索两种不同的模式,并根据两种模式搜索的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
注意:两个模式都位于同一文件中的不同行
答案 3 :(得分:0)
egrep -z -q 'pattern1.*pattern2|pattern2.*pattern1'
如果文件中存在两种模式,则返回true,否则返回false。