【问题标题】:AWK output to arrayAWK 输出到数组
【发布时间】:2020-01-15 05:20:34
【问题描述】:

我正在学习“AWK”。好吧,我需要在变量上输出 awk 命令来解析它。 该文件有 130000 个通道。我需要在 AWK 中放置一个类似数组的列,以便在脚本的其他部分使用该变量。对不起我的英语,如果你不明白我的目的,请问我。

代码:

awk '/file:/{ name=$3 ; print name ;)' ejemplo.txt

我试试:

list=$(awk '/file:/{ name=$3 ; print name;)' ejemplo.txt)

但是当我尝试显示变量 $list 中的内容时,只显示 1 个车道。 我尝试声明数组,但只显示 1 个结果

有人明白发生了什么吗?如何构建一个包含所有输出的数组?

我尝试使用此代码使用 AWK 构建数组。也许我有点笨,但我不知道如何解决我的问题:

#!/bin/bash
#filename: script2.sh

conta=$(cat ejemplo_hdfs.txt | wc -l)

for i in `seq 0 $conta`;do
        objeto=" "
        owner=" "
        group=" "
        awk '{
                if($1=="#" && $2=="file:") objeto=$3;
                else if($1=="#" && $2=="owner:") owner=$3;
                else if($1=="#" && $2=="group:") group=$3;
                else
                        print $3
                ;}' ejemplo_hdfs.txt
        echo $objeto+","+$owner+","+$group

done

【问题讨论】:

标签: linux bash shell awk


【解决方案1】:

要将数组分配给 bash 中的变量,生成元素的整个表达式需要放在括号中。计算表达式产生的每个单词都成为结果数组的一个元素。

例子:

#!/bin/bash
foo=($(awk -F, '{print $2}' x.txt))
# Size of array
echo "There are ${#foo[@]} elements"
# Iterate over each element
for f in "${foo[@]}"; do
    echo "$f"
done
# Use a specific element.
echo "The second element is ${foo[1]}"
$ cat x.txt
1,a dog
2,b
3,c
$ ./array_example.sh
There are 4 elements
a
dog
b
c
The second element is dog

【讨论】:

    猜你喜欢
    • 2011-05-02
    • 2020-04-14
    • 2014-03-28
    • 2013-02-12
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 2012-09-13
    相关资源
    最近更新 更多