2013-04-05 63 views
27

awk中是否有一個OR聲明給出下面的代碼片段:AWK或聲明

awk '{if ($2=="abc") print "blah"}' 

是否有可能增加一個OR語句,這樣,如果$2==abc OR def -> print

回答

36

是的。有邏輯或||,您可以使用:

awk '{if ($2=="abc" || $2=="def") print "blah" }' 
+0

呵呵,謝謝:) – Numpty 2013-04-05 17:23:20

2
awk '{if ($2=="abc" || $2=="def") print "blah"}' 
31

在AWK你不會寫這樣的代碼:

awk '{if ($2=="abc") print "blah"}' 

,你反而會這樣寫:

awk '$2=="abc" {print "blah"}' 

,並添加一個「或」將取決於你最終試圖做的是什麼:

awk '$2~/^(abc|def)$/ {print "blah"}' 

awk '$2=="abc" || $2=="def" {print "blah"}' 

awk ' 
BEGIN{ split("abc def",tmp); for (i in tmp) targets[tmp[i]] } 
$2 in targets {print "blah"} 
' 

如果您想要匹配多個字符串,最後一個將是最合適的。