关于 awk 中使用 split 的疑问

关于 awk 中使用 split 的疑问
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() 的返回值(即数组中的元素数量)。

相关内容