0

我正在我的文件的一个字段中搜索具有多行的模式。如果模式存在,我想输出该行。但是,如果模式根本不存在,我想输出类似“缺失”的内容。

awk '{if($2=="123456"){print $0} else {print "not present"} }' file.txt

(由于逐行输出,这不起作用)

我的问题是这里的逐行输出。每行有一个输出,但我想要与模式匹配的行或术语“缺失”(仅一次)。

我感谢各种帮助!我尝试了几种方法,包括 grep、if else、循环,但没有任何方法可以按我的意愿工作。

4

1 回答 1

2

在字里行间阅读我认为你想要这样的东西:

awk '$2 == "123456" { print; f = 1 } END { if (!f) print "missing" }' file

这会在第二个字段匹配并设置标志时打印该行f。处理完文件后,如果标志仍未设置,则打印消息。

于 2016-03-01T16:10:19.570 回答