使用awk将拆分字符串存储到数组中

时间:2017-01-04 09:26:28

标签: bash unix awk

我使用awk-split来分割字符串并将其存储到数组中。

我无法在脚本中使用该数组。它显示空数组。

echo $pre_session_cmds | awk '{split($0,cmd_array,"};")} END {for(n in cmd_array){ print cmd_array[n] }}'

for element in "${cmd_array[@]}"
do
    echo "command is $element"
done

问题: 正确打印awk打印元素但访问for循环显示数组为空

3 个答案:

答案 0 :(得分:0)

只需在awk中打​​印:

echo $pre_session_cmds | awk '{ split($0,cmd_array,"};") } 
                          END { for(n in cmd_array) 
                                    print "command is " cmd_array[n] }'

答案 1 :(得分:0)

使用bash解决方案:

cmd_array=($(echo $pre_session_cmds |sed -e "s/};/ /g"))

或者只是

for element in $(echo ${pre_session_cmds}|sed -e "s/};/ /g");do
   echo $element
done

答案 2 :(得分:0)

你在awk中创建的数组只属于awk。 当你走出awk时它不存在。 而是这样做:

declare -a arr
arr=( $(your code here) )
echo ${arr[0]}
echo ${arr[*]}

所以它会变成:

declare -a arr
arr=( $(echo $pre_session_cmds | awk '{split($0,cmd_array,"};")} END {for(n in cmd_array){ print cmd_array[n] }}') )
echo ${arr[0]}
echo ${arr[*]}

我还没有测试过它。