2016-03-01 39 views
0

我正在我的文件的一个字段中搜索一个模式并且有多行。如果该模式存在,我想输出该行。但是,如果模式根本不存在,我想输出类似“缺失”的内容。Bash/awk:当模式不存在时打印“不存在”只有一次,而不是每行

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

(这并不应于行输出工作线)

我的问题是线路输出这里就行了。每行有一个输出,但我想要匹配模式的行或“丢失”(只有一次)。

我感谢各种帮助!我尝试了几种方法,包括grep,如果其他的,循环,但没有任何工作,因为我想。

+1

这听起来很容易。但是不知道你到底想要什么。请举个例子来描述这个要求。 – Kent

+0

我的问题解决了。尽管如此,谢谢你。 – PsoAD

回答

2

我想你的字里行间想是这样的:

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

这将输出线在第二场比赛和设置标志f。处理完文件后,如果标记仍未设置,则会打印该消息。

+0

谢谢!这正是我期待的! – PsoAD

相关问题