我运行这个命令
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
?
当您发出时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)
简而言之,您可以通过以下方式编写命令:
使用 Bash 的进程替换:
wc -l < <(grep '\\' string_demo)
Run Code Online (Sandbox Code Playgroud)使用常用方法:
grep '\\' string_demo | wc -l
Run Code Online (Sandbox Code Playgroud)****不要使用egrep
,它已被弃用而支持grep -E
.
查看U&L 的这篇文章以了解grep
, grep -E
&之间的差异grep -F
。
归档时间: |
|
查看次数: |
2498 次 |
最近记录: |