打印字符串时的grep没有得到匹配

Bhu*_*ale 5 grep bash

假设我有两个文件,如下所示:

$ cat search_file.txt
This line contains kwd1.
This line contains kwd2.
This line contains no match.
This line contains no match.
This line contains kwd5.
Run Code Online (Sandbox Code Playgroud)
$ cat search_kwd.sh
grep kwd1 search_file.txt
grep kwd2 search_file.txt
grep kwd3 search_file.txt
grep kwd4 search_file.txt
grep kwd5 search_file.txt
Run Code Online (Sandbox Code Playgroud)

当我运行 search_kwd.sh 时,我得到:

$ sh search_kwd.sh
This line contains kwd1.
This line contains kwd2.
This line contains kwd5.
Run Code Online (Sandbox Code Playgroud)

我想string在 grep 没有匹配时打印一个。输出将如下所示:

$ sh search_kwd.sh
This line contains kwd1.
This line contains kwd2.
string
string
This line contains kwd5.
Run Code Online (Sandbox Code Playgroud)

我如何去在bash这样做呢?

pLu*_*umo 15

grep 退出非零代码时没有发现。

来自man grep

通常,如果选择了一行,退出状态为 0,如果没有选择任何行,则退出状态为 1,如果发生错误,则退出状态为 2。

所以你可以使用:

grep kwd3 search_file.txt || echo "string"
Run Code Online (Sandbox Code Playgroud)

  • +1 表示`||` 的惯用用法;我正要建议`if`,它以一种更笨拙、更笨拙的方式做同样的事情。 (2认同)