arr=($(echo "great#man" | awk '{split($0,a,"#"); } END {print a[0]; print a[1];}'))
echo " ${arr[0]} "
echo " ${arr[1]}"
我的预期输出是:
great
man
但我越来越
great
arr[1] 没有被打印
答案1
这种变化对我有用:
$ echo "great#man" | awk '{split($0,a,"#"); } END {print a[1]; print a[2];}'
great
man
来自在线文档:
split(string, array [, fieldsep [, seps ] ])
将字符串分成由 fieldsep 分隔的片段,并将这些片段存储在数组中,将分隔符字符串存储在 seps 数组中。第一部分存储在 array[1] 中、 array[2] 中的第二个部分,依此类推。第三个参数 fieldsep 的字符串值是描述在何处拆分字符串的正则表达式(很像 FS 可以是描述在何处拆分输入记录的正则表达式;请参阅正则表达式字段拆分)。如果省略 fieldsep,则使用 FS 的值。 split() 返回创建的元素数。 seps 是 gawk 扩展,其中 seps[i] 是 array[i] 和 array[i+1] 之间的分隔符字符串。如果 fieldsep 是单个空格,则任何前导空格都会进入 seps[0],任何尾随空格都会进入 seps[n],其中 n 是 split() 的返回值(即数组中的元素数量)。