2012-04-18 60 views
2

我写的ksh脚本解析一个管道分隔字符串Unix的解析管道分隔格式字符串

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

上面的代码似乎工作,但我无法指定输出的值[3]接到虚。

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

回答

6

外壳可以做到这一点:

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

您不能将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` 
+0

感谢ben23,我希望我能接受一个问题的两个答案 – iwan 2012-04-20 00:16:56