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