【发布时间】:2015-01-21 20:06:57
【问题描述】:
当我应用此代码时:
gawk '{ if ($0 ~ /cat|dog/) {
print "animal" }
else if ($0 ~ /[[:digit:]]+/) {
print "number" }
else { print "unknown" } }' path/to/input.txt > path/to/output.txt
到这个输入:
100
cat
200
something
dog
我看到了想要的输出:
number
animal
number
unknown
animal
很好。但是当我使用这段代码时:
gawk 'BEGIN {animals = /cat|dog/;
digits = /[[:digit:]]+/ }
{ if ($0 ~ animals) {
print "animal" }
else if ($0 ~ digits) {
print "number" }
else { print "unknown" } }' path/to/input.txt > path/to/output.txt
我看到这个输出:
animal
unknown
animal
unknown
unknown
发生了什么事?真是奇怪又不可预测!
【问题讨论】:
-
如果您使用
/作为正则表达式分隔符,则在将其分配给变量时必须使用~符号。
标签: regex shell unix command-line awk