如何保证grep至少返回一行

如何保证grep至少返回一行,grep,default,Grep,Default,我想运行一个运行grep命令并输出结果的脚本。我希望grep返回一行,但希望处理没有匹配行的情况(例如,如果grep文件不存在)。有没有办法执行类似的操作 line = grep ... if line is empty print "\n" else print line 您所需要做的就是检查grep的返回代码 grep如果一行匹配,则返回0;如果没有匹配的行,则返回1。如果发生错误,它将返回大于1的值 $ echo "hi" | grep hi hi $ echo $? 0 $

我想运行一个运行grep命令并输出结果的脚本。我希望grep返回一行,但希望处理没有匹配行的情况(例如,如果grep文件不存在)。有没有办法执行类似的操作

line = grep ...
if line is empty
   print "\n"
else
   print line

您所需要做的就是检查grep的返回代码

grep
如果一行匹配,则返回0;如果没有匹配的行,则返回1。如果发生错误,它将返回大于1的值

$ echo "hi" | grep hi
hi
$ echo $?
0
$ echo "hi" | grep hello
$ echo $?
1

您所需要做的就是检查grep的返回代码

grep
如果一行匹配,则返回0;如果没有匹配的行,则返回1。如果发生错误,它将返回大于1的值

$ echo "hi" | grep hi
hi
$ echo $?
0
$ echo "hi" | grep hello
$ echo $?
1
在某些情况下(例如在bash脚本中设置了
set-e
),您不希望
grep
以状态1退出,这是提供给
grep
的表达式不匹配的情况

因此,要防止将退出状态1(或更高)提供回调用
grep
的终端或脚本,请使用:

grep "EXPR" FILE.txt || echo "No match found"
可能的结果:

  • “EXPR”在FILE.txt中匹配-输出:匹配列表
  • “EXPR”在FILE.txt中不匹配-输出:“未找到匹配项”
  • 找不到grep或文件的不正确参数(退出状态2及更高)输出(STDOUT):未找到匹配项(以及STDERR消息)
  • 在某些情况下(例如在bash脚本中设置了
    set-e
    ),您不希望
    grep
    以状态1退出,这是提供给
    grep
    的表达式不匹配的情况

    因此,要防止将退出状态1(或更高)提供回调用
    grep
    的终端或脚本,请使用:

    grep "EXPR" FILE.txt || echo "No match found"
    
    可能的结果:

  • “EXPR”在FILE.txt中匹配-输出:匹配列表
  • “EXPR”在FILE.txt中不匹配-输出:“未找到匹配项”
  • 找不到grep或文件的不正确参数(退出状态2及更高)输出(STDOUT):未找到匹配项(以及STDERR消息)