Bash/awk:当模式不存在时只打印一次 "not present",而不是每行
Bash/awk: when pattern not present print "not present" only once, not per line
我正在我的文件的多行字段中搜索模式。如果存在模式,我想输出该行。但是,如果模式根本不存在,我想输出类似 "missing".
的内容
awk '{if(=="123456"){print [=12=]} else {print "not present"} }' file.txt
(由于逐行输出,这不起作用)
我的问题是这里逐行输出。每行有一个输出,但我想要与模式匹配的行或术语 "missing" (仅一次)。
感谢您提供的各种帮助!我尝试了几种方法,包括 grep、if else、循环,但没有任何效果如我所愿。
字里行间我想你想要这样的东西:
awk ' == "123456" { print; f = 1 } END { if (!f) print "missing" }' file
这会在第二个字段匹配时打印该行并设置标志 f
。处理文件后,如果标志仍未设置,则打印消息。
我正在我的文件的多行字段中搜索模式。如果存在模式,我想输出该行。但是,如果模式根本不存在,我想输出类似 "missing".
的内容awk '{if(=="123456"){print [=12=]} else {print "not present"} }' file.txt
(由于逐行输出,这不起作用)
我的问题是这里逐行输出。每行有一个输出,但我想要与模式匹配的行或术语 "missing" (仅一次)。
感谢您提供的各种帮助!我尝试了几种方法,包括 grep、if else、循环,但没有任何效果如我所愿。
字里行间我想你想要这样的东西:
awk ' == "123456" { print; f = 1 } END { if (!f) print "missing" }' file
这会在第二个字段匹配时打印该行并设置标志 f
。处理文件后,如果标志仍未设置,则打印消息。