这个 egrep 命令有什么作用?

Aks*_*tel 1 bash grep

我运行这个命令

egrep "\" string_demo | wc -l
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

akshay@akshay-K53SC:~/shell$ egrep "\" string_demo | wc -l
> abc
> pqr
> xyz
> 
Run Code Online (Sandbox Code Playgroud)

">" 将继续,直到我按下Ctrl+ D。那么这是什么?

还有grep,egrep和之间的确切区别是什么fgrep

hee*_*ayl 5

当您发出时egrep "\" string_demo | wc -l,您的 shell 将被\视为反斜杠转义并继续接受输入,PS2直到您输入 EOF ( Ctrl+ D)。

在这些情况下,您需要使用单引号来逃避 shell 的解释。更准确地说,如果要在文件中搜索文字反斜杠,请使用:

grep '\\' file.txt
Run Code Online (Sandbox Code Playgroud)

例子:

$ grep '\\' file.txt 
eagle,dove\ ,cat
Run Code Online (Sandbox Code Playgroud)

在这里我做了两个更改,首先使用单引号 ( '') ,其次用于\\告诉grep我要查找文字\,否则grep将显示以下错误:

$ grep '\' file.txt 
grep: Trailing backslash
Run Code Online (Sandbox Code Playgroud)

简而言之,您可以通过以下方式编写命令:

****不要使用egrep,它已被弃用而支持grep -E.

查看U&L 的这篇文章以了解grep, grep -E&之间的差异grep -F