【发布时间】: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
【问题讨论】:
-
试试
list=($(awk ...)) -
list="$(awk '/file:/{ name=$3 ; print name;)' ejemplo.txt)"? -
不要将
awk的结果存储在 shell 数组中。在 awk 本身中进行剩余处理。 -
不要使用任何语法。因此,要使用 awk 的结果构建 var,我无法从 awk 命令输出 var。