使用 egrep 的 Unix 搜索模式



嗨,朋友们,

我需要在一个文件中搜索两种模式。 例如模式 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。

最新更新