嗨朋友们,
我需要在一个文件中搜索两个模式。前任。pattern1和pattern2,我正是想要那个特定的词。根据此命令的成功或失败,我将使用“IF”进行两个操作。
例子。
if (condition)
条件是评估egrep命令以在文件中搜索两个模式。($? = 0)
仅当在文件中找到两种模式时,该条件才应为真。否则它应该失败。
但是实际的egrep
命令是在模式之间执行OR函数,我想要模式之间的AND逻辑。请帮我。
嗨朋友们,
我需要在一个文件中搜索两个模式。前任。pattern1和pattern2,我正是想要那个特定的词。根据此命令的成功或失败,我将使用“IF”进行两个操作。
例子。
if (condition)
条件是评估egrep命令以在文件中搜索两个模式。($? = 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。