我正在编写 ksh 脚本来解析管道分隔的字符串
export dummy="abc"
echo "123|456|789" | awk '{split($0,output,"|"); print output[3] output[2] output[1]}'
上面的代码似乎有效,但我无法将 output[3] 的值分配给 dummy。
有没有办法进行这种解析,但我想将解析结果分配给 ksh 空间内的一个变量,即虚拟变量(在上面的示例中)?
外壳可以做到这一点:
line="123|456|789"
IFS='|' read a b c <<END
$line
END
echo $c # => 789
您不能将 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`