我有以下两个变量,一个变量($x
)列出了几个目录的名称和状态,而另一个变量($y
)仅包含目录的名称。我需要从第二个($y)
变量的列表中打印目录名称,该列表名称在第一个OK OK OK
变量的列表中没有($x)
作为状态。
echo "$x"
/foo OK OK OK
/bar OK OK OK
/foo/bar OK OK OK
/bar/foo OK OK OK
/foobar OK OK OK
/bar/foo OK OK OK
/bad/dir NA NA NA
echo "$y"
/foo
/bar
/foo/bar
/bar/foo
/foobar
/bar/foo
/bad/dir
/another/bad/dir
我正在尝试打印状态为“ OK OK OK”的目录名称,但出现以下错误:
awk 'NR==FNR{name[$1]=$1;next} ("OK"FS"OK"FS"OK" in $2FS$3FS$4){print $1}' <(echo "$y") <(echo "$x")
awk: cmd. line:1: NR==FNR{name[$1]=$1;next} ("OK"FS"OK"FS"OK" in $2FS$3FS$4){print $1}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: NR==FNR{name[$1]=$1;next} ("OK"FS"OK"FS"OK" in $2FS$3FS$4){print $1}
awk: cmd. line:1: ^ syntax error
我期望以下输出:
/bad/dir
/another/bad/dir
注意:这是原始数据集的缩小版本。
答案 0 :(得分:3)
$ awk 'NR==FNR{stat[$1]=$2 FS $3 FS $4; next} stat[$1]!="OK" FS "OK" FS "OK"' <(printf '%s\n' "$x") <(printf '%s\n' "$y")
/bad/dir
/another/bad/dir