gpt4 book ai didi

linux - AWK 输出到数组

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:54 25 4
gpt4 key购买 nike

我正在学习“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

最佳答案

要在 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

关于linux - AWK 输出到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57921809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com