它在建筑AWK中不起作用?

时间:2016-08-03 08:55:14

标签: linux bash shell awk

awk 'BEGIN {print "'"$QUERY_IMSI_END"'";
} 
{
split($0,a,";")
}
END {print a[3],a[2],a[1]}'

它不会打印由QUERY_IMSI_END组成的结果数组。如何做出正确的设计?

2 个答案:

答案 0 :(得分:0)

awk从stdin读取它的输入。但print将输出打印到stdout。

我想你想要这个:

echo "${QUERY_IMSI_END}" | awk -F';' '{print $3, $2, $1}'

请注意,您可以使用-F传递与默认字段分隔符不同的字段分隔符。明确split()是不必要的。

答案 1 :(得分:0)

QUERY_IMSI_END="Some;thing;is;wrong"
awk -F";" '{print $3,$2,$1}' <(echo $QUERY_IMSI_END)

或者如果你想将该变量传递给awk。但请记住,awk从STDIN读取它需要读取缓冲区或句柄的位置。所以你必须传递一个文件或缓冲区句柄作为输入。

awk -v Variable=$QUERY_IMSI_END -F";" '{split(Variable,array,";"); print a[3],a[2],a[1]}' file1