2

我正在编写 ksh 脚本来解析管道分隔的字符串

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

上面的代码似乎有效,但我无法将 output[3] 的值分配给 dummy。

有没有办法进行这种解析,但我想将解析结果分配给 ksh 空间内的一个变量,即虚拟变量(在上面的示例中)?

4

2 回答 2

6

外壳可以做到这一点:

line="123|456|789"
IFS='|' read a b c <<END
$line
END
echo $c  # => 789
于 2012-04-18T13:43:02.190 回答
3

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

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

但是, awk 在这里有点矫枉过正,cut也可以正常工作:

export dummy=`echo "123|456|789" | cut -d'|' -f3`
于 2012-04-18T11:02:38.147 回答