2010-07-22 59 views
0

我有以下文件AWK +如何执行或awk命令行动

your Answer = AA 
your Answer = AB 
your Answer = CD 
your Answer = XY 
your Answer = DD 

验证我运行下面的awk所有的答案

echo "your Answer = AA" | awk '/= AA/{print " passed "}' 
echo "your Answer = AA" | awk '/= AB/{print " passed "}' 
echo "your Answer = AA" | awk '/= CD/{print " passed "}' 
echo "your Answer = AA" | awk '/= XY/{print " passed "}' 
echo "your Answer = AA" | awk '/= DD/{print " passed "}' 

我的问题:如何做同样的上一个awk命令来运行5 awk命令?

回声 “你的答案= AA” | AWK '/ = AA | AB | CD | XY | DD/{打印 “合格”}'

回答

1

你接近:你只需要放一个交替组中这样的等号是永远存在的:

echo "your Answer = AA" | awk '/= (AA|AB|CD|XY|DD)/ {print " passed "}' 
0
awk -F"=" '$2~/A[AB]|[CD]D|XY/{print "passed"}' file 
+0

不好 因为回声“布拉布拉=布拉布拉AA” | awk -F“=”'$ 2〜/ A [AB] | [CD] D | XY/{print“passed”}'也打印通过,在这种情况下它必须不被打印传递,因为在“=”之后,我们有blabla而不是AA请咨询? – lidia 2010-07-22 08:19:23

+0

这是因为AA现在不是场2($ 2)。如果你的成绩不错,请使用$ 0。 – ghostdog74 2010-07-22 08:52:33

+0

不好“echo”param1 param2 param3 = param1 AA“| awk -F”=“'$ 0〜/ AA | AB/{print”通过了“}”,它的打印也通过了?????????? – lidia 2010-07-22 09:01:08

0
or(echo "your Answer = AA",echo "your Answer = AA") | awk '/= AA/{print " passed "}' 

尝试这样的事情。

+0

哪里是或规则? ,如果我有“=”之间的空格AA或AB ?? – lidia 2010-07-22 08:22:25

+0

sintax是或(值1,值2),空间并不重要。 – Kex 2010-07-22 08:43:36