【问题标题】:How to return all elements of a arrary of split function in awk without making a loop to a ksh arrary?如何在 awk 中返回拆分函数数组的所有元素而不对 ksh 数组进行循环?
【发布时间】:2015-10-02 14:14:56
【问题描述】:

关于我需要在没有循环的情况下从数组拆分函数中返回所有元素,但我不知道它是哪个sintyaxis,我认为:

#!/bin/ksh
set -a MyArray
echo 'hello world' | awk '{
    split($0, arrSplit) 
    print arrSplit[all elements]
}'

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 请编辑您的问题以显示您所需的输出。你知道echo "${myArray[@}}"吗?如果我理解你的问题,你根本不需要| awk ....。祝你好运。

标签: arrays function split return ksh


【解决方案1】:

如果你想在ksh中设置一个数组,你只需要

set -A myArray hello world
echo "${myArray[0]}"    # => hello

在 awk 中,split 函数返回生成的元素数。要遍历数组,你需要这个值

awk '
    BEGIN {
        n = split("this is a string that I want to split into words", ary)
        for (i = 1; i <= n; i++) {
            print i, ary[i]
        }
    }
'

编程有 3 件事很难:给事物起个好名字,以及一个错误。

【讨论】:

  • 谢谢,我明白了,但我想将包含所有元素的数组作为参数返回给 Shell 数组 ksh。
  • 然后将print 行更改为:printf "%s ", ary[i],并使用命令替换来捕获输出:set -A kshArray $(awk ...)。没有办法避免循环遍历数组元素。为什么你认为你需要 awk 来做到这一点? ksh 是一个非常强大的 shell。
猜你喜欢
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
  • 2021-07-30
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
相关资源
最近更新 更多