Shell 使用egrep的Unix搜索模式
嗨,朋友们 我需要在一个文件中搜索两种模式。例:pattern1和pattern2,我想要的正是这个词。根据这个命令的成败,我将使用“IF”进行两个操作 例如Shell 使用egrep的Unix搜索模式,shell,unix,if-statement,grep,Shell,Unix,If Statement,Grep,嗨,朋友们 我需要在一个文件中搜索两种模式。例:pattern1和pattern2,我想要的正是这个词。根据这个命令的成败,我将使用“IF”进行两个操作 例如 if(条件) 条件是评估用于在文件中搜索两个模式的命令。 只有在文件中找到这两种模式时,条件才应为true($?=0)。否则它就会失败 但是实际的egrep命令在模式之间执行或运行,我需要模式之间的逻辑。请帮帮我。逻辑上很模糊。如果您想检查文件中的两个模式,不管它们是否在同一行中,您可以这样做 grep 'pattern1' somefi
if(条件)
条件是评估用于在文件中搜索两个模式的命令。
只有在文件中找到这两种模式时,条件才应为true($?=0)
。否则它就会失败
但是实际的
egrep
命令在模式之间执行或运行,我需要模式之间的逻辑。请帮帮我。逻辑上很模糊。如果您想检查文件中的两个模式,不管它们是否在同一行中,您可以这样做
grep 'pattern1' somefile && grep 'pattren2' somefile
如果您希望两种模式出现在同一行中
grep 'pattern1' somefile | grep 'pattern2'
我想您可以在shell脚本中连接两个grep,如下所示:
#!/bin/bash
if egrep -q "pattern1" filename && egrep -q "pattern2" filename; then
exit 0
else
exit 1
fi
-q
确保没有来自egrep
的输出(如果找到模式,它只会返回true),而和&
确保只有在文件中找到两个模式时才会返回退出0
。您好,我已经解决了以下问题:
要求:在不同的线路上搜索两种不同的模式,并根据两种模式搜索的结果和操作采取行动
代码:
注意:两种图案在同一文件中的不同行上
egrep -z -q 'pattern1.*pattern2|pattern2.*pattern1'
如果文件中同时存在这两种模式,则返回true,否则返回false。您可以发布您的egrep命令和模式吗?您好,这是我的脚本。#/bin/ksh echo“输入开始处理周期:”read START echo“输入结束处理周期:”read END if egrep-q“^$START$”example.txt&&egrep-q“^$END$”example.txt然后echo“VALID processing period”否则echo“INVALID processing period”fi--我的意图是使用单个egep(在一个命令中搜索两个模式)并将模式作为单词而不是子字符串。因此,我在模式的开头和结尾添加了“^”和“$symbol”。#!/bin/ksh echo”输入开始处理周期:“read START echo”输入结束处理周期:“read end if egrep-q”^$START$”example.txt&&egrep-q“^$end$”example.txt然后回显“有效处理期”否则回显“无效处理期”编辑您的问题并在代码块中插入脚本。它完全不可读。您好,谢谢您的回答。用于搜索特定单词(而不是作为子字符串)语法是在模式的开头加一个“^”,在它的结尾加一个“$”。也就是说…grep“^pattern1$”。我在脚本中把我的模式作为一个变量,它应该被用作$pattern1。你能告诉我如何指定“$”或不与我们在“”中指定的结尾“$”混淆吗?带单引号的值(“$pattern”)不是由shell扩展的,所以它是现有的。所以您的版本应该是
grep“^$pattern1\$”
。但是,有两件事-1.word是一个子字符串,2.您的模式将匹配整个字符串,因为^
是字符串的开头,$
是结尾。您好,谢谢..但我的要求是使用'egrep'并在其中搜索两个模式和条件…但这里您建议使用两个grep命令。您能帮忙吗p在这方面?当你认为你的问题得到回答时,请接受和/或向上投票,以便其他人知道哪个答案对你帮助最大。
egrep -z -q 'pattern1.*pattern2|pattern2.*pattern1'