0

嗨朋友们,

我需要在一个文件中搜索两个模式。前任。pattern1pattern2,我正是想要那个特定的词。根据此命令的成功或失败,我将使用“IF”进行两个操作。

例子。

if (condition)

条件是评估egrep命令以在文件中搜索两个模式。($? = 0)仅当在文件中找到两种模式时,该条件才应为真。否则它应该失败。

但是实际的egrep命令是在模式之间执行OR函数,我想要模式之间的AND逻辑。请帮我。

4

4 回答 4

1

我想你可以像这样在你的 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时才返回。

于 2013-10-10T11:24:13.153 回答
0

逻辑上很模糊。如果你想检查文件中的两种模式,无论它们是否在同一行,你可以这样做

grep 'pattern1' somefile && grep 'pattren2' somefile

如果您希望两种模式出现在同一行中

grep 'pattern1' somefile | grep 'pattern2'
于 2013-10-10T11:24:09.817 回答
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

注意:两个模式都在同一个文件的不同行上

于 2013-10-18T07:27:09.967 回答
0
egrep -z -q 'pattern1.*pattern2|pattern2.*pattern1'

如果文件中存在这两种模式,它将返回 true,否则返回 false。

于 2013-10-18T08:19:29.587 回答