收集 bash 脚本中的 awk 输出进行处理

收集 bash 脚本中的 awk 输出进行处理

我在 bash 脚本中有一个循环,用于处理文件夹中的多个文件。在我的循环中,对于每个文件,我执行以下行:

awk -F":" '{ print "Name: " $1 "\t\tID:" $3 }' $file

我想收集一些 bash 变量/数组中处理的所有文件的输出,以供循环外的其他处理。我怎样才能在 bash 中实现这一目标?

答案1

这可以使用 shell 脚本数组轻松完成:

i=0
for file in file1 file2 ....; do
    output[$i]=$(awk -F":" '{ print "Name: " $1 "\t\tID:" $3 }' "${file}")
    i=$((${i}+1))
done

答案2

与 a0f3dd13 类似,您可以使用联想性的数组。它们在这里可能很有用,尤其是在检索数据时。

关联数组可以使用字符串而不是整数作为索引(它们基本上是哈希映射),因此您可以更轻松地检索数据。

declare -A output
for file in file1 file2 ....;do
    output["$file"]=$(awk -F":" '{ print "Name: " $1 "\t\tID:" $3 }' "${file}")
done

然后要检索数据,您可以使用:

echo "${output[file1]}"

这将输出你得到的结果file1

相关内容