Unix用ksh分析pipe道分隔的格式string

我正在写ksh脚本来parsingpipe道分隔string

export dummy="abc" echo "123|456|789" | awk '{split($0,output,"|"); print output[3] output[2] output[1]}' 

上面的代码似乎工作,但我不能将输出[3]的值分配给虚拟。

有没有办法做这样的parsing,但我想分配的parsing结果在ksh空间内的variables,即虚拟(在上面的示例)?

外壳可以做到这一点:

 line="123|456|789" IFS='|' read abc <<END $line END echo $c # => 789 

您不能将awk变量(即output[3] )赋值给shell变量(即dummy ),您只能将awk的输出分配给一个变量,例如

 export dummy=`echo "123|456|789" | awk -F'|' '{ print $3; }'` 

不过,awk在这里有点矫枉过正, cut也会起作用:

 export dummy=`echo "123|456|789" | cut -d'|' -f3`