Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何使用其他命令模拟egrep?_Linux_Bash_Awk_Grep - Fatal编程技术网

Linux 如何使用其他命令模拟egrep?

Linux 如何使用其他命令模拟egrep?,linux,bash,awk,grep,Linux,Bash,Awk,Grep,我必须模拟egrep以及其他命令的一些选项,主要是awk,但我真的不知道如何在脚本中实现它。我知道awk可以识别正则表达式,但它可以替代egrep 我真的不知道从哪里开始。使用的示例文件: 模拟: 1. 白鹭-n 2. 白鹭-v 或(正如丹尼斯在评论中指出的) 3. egrep-i(这仅在gnu awk中使用) 4. egrep-w(这仅在gnu awk中使用) 你为什么要这么做?这是一个非常主观的问题。你手头有具体的任务吗?你能帮我们把它分解一下,这样我们就能给出一个更符合实际的解决方案吗?这

我必须模拟
egrep
以及其他命令的一些选项,主要是
awk
,但我真的不知道如何在脚本中实现它。我知道
awk
可以识别正则表达式,但它可以替代
egrep

我真的不知道从哪里开始。

使用的示例文件: 模拟: 1. <代码>白鹭-n 2. <代码>白鹭-v 或(正如丹尼斯在评论中指出的)

3.
egrep-i
(这仅在gnu awk中使用) 4.
egrep-w
(这仅在gnu awk中使用)
你为什么要这么做?这是一个非常主观的问题。你手头有具体的任务吗?你能帮我们把它分解一下,这样我们就能给出一个更符合实际的解决方案吗?这是一个练习。我必须模拟白鹭[n][v][I][w][f文件]。我想我必须使用“/reg-expr-goes-here/”之类的东西。一个练习?我们在这里谈论的是作业吗?你需要支持哪些选项?更接近于egrep-v的模拟:
awk'/LastLine/
。您的
egrep-w
备选方案将输出误报。它应该是
awk'/\/
。谢谢@denniswillamson,我会在答案中添加你对
egrep-v
的建议,我忘记了单词边界(我的错):
egrep-f
的意思是从文件中读取模式,而不是awk脚本。这可以用
awk'(NR==FNR){++a[$0]}来模拟!一个[$0]'模式文件inputfile
或类似的文件。@tripleee Oopsie…更新了答案。我无法让您的解决方案发挥作用,因此我添加了自己的解决方案。但感谢您的反馈。:)是的,awk支持与egrep大致相同的正则表达式特性,您只需要将其放在斜杠分隔符中,反斜杠转义任何文本斜杠。
[jaypal:~/Temp] cat file
This is FirstLine
SecondLineEEE
AAAblablabla
ForthLineEEE
FifthLine
LastLine
[jaypal:~/Temp] egrep -n 'LastLine' file
6:LastLine
[jaypal:~/Temp] awk /LastLine/'{print NR":"$0}' file
6:LastLine
[jaypal:~/Temp] egrep -v 'LastLine' file
This is FirstLine
SecondLineEEE
AAAblablabla
ForthLineEEE
FifthLine
[jaypal:~/Temp] awk '/LastLine/{next}1' file
This is FirstLine
SecondLineEEE
AAAblablabla
ForthLineEEE
FifthLine
[jaypal:~/Temp] awk '!/LastLine/' file
This is FirstLine
SecondLineEEE
AAAblablabla
ForthLineEEE
FifthLine
[jaypal:~/Temp] egrep -i 'lastline' file
LastLine
[jaypal:~/Temp] gawk -v IGNORECASE=1 '/lastline/' file
LastLine
[jaypal:~/Temp] egrep -w 'is' file
This is FirstLine
[jaypal:~/Temp] gawk '/\<is\>/' file
This is FirstLine
[jaypal:~/Temp] cat file
This is FirstLine
SecondLineEEE
AAAblablabla
ForthLineEEE
FifthLine
LastLine

[jaypal:~/Temp] cat patternfile
LastLine
is

[jaypal:~/Temp] egrep -f patternfile file
This is FirstLine
LastLine

[jaypal:~/Temp] awk 'NR==FNR{a[$0]++;next} {for (x in a) if ($0~x) print $0}' patternfile file
This is FirstLine
LastLine