With Perl you can check if an array contains a value
$ perl -e \'@foo=(444,555,666); print 555 ~~ @foo ? \"T\" : \"F\"\'
T
However with awk
Awk noob here. I digested Steven's answer and ended up with this hopefully easier to understand snippet below. There are 2 more subtle problems:
["value1", "value2"]
, it's more like {0: "value1", 1: "value2"}
.in
checks for keys, and there is no built-in way to check for values.So you have to convert your array (which is actually a dictionary) to a dictionary with the values as keys.
BEGIN {
split("value1 value2", valuesAsValues)
# valuesAsValues = {0: "value1", 1: "value2"}
for (i in valuesAsValues) valuesAsKeys[valuesAsValues[i]] = ""
# valuesAsKeys = {"value1": "", "value2": ""}
}
# Now you can use `in`
($1 in valuesAsKeys) {print}
echo "A:B:C:D:E:F" | tr ':' '\n' | \
awk 'BEGIN{ split("A D F", parts); for (i in parts) dict[parts[i]]=""} $1 in dict'