2012-04-18 55 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