【发布时间】:2021-05-30 12:46:26
【问题描述】:
我有一个包含以下内容的文本文件:
Paige
Buckley
Govan
Mayer
King
Harrison
Atkins
Reinhardt
Wilson
Vaughan
Sergovia
Tarrega
我的目标是为每组名称创建一个数组。然后遍历第一个值数组,然后移动到第二个值数组,最后是第三个数组。每个集合在文本文件中由一个新行分隔。非常感谢您提供代码或逻辑方面的帮助!
到目前为止,我有以下内容。当我到达换行符时,我不确定前进的逻辑。我在这里的研究还表明我可以使用readarray -d。
#!/bin/bash
my_array=()
while IFS= read -r line || [[ "$line" ]]; do
if [[ $line -eq "" ]];
.
.
.
arr+=("$line") # i know this adds the value to the array
done < "$1"
printf '%s\n' "${my_array[@]}"
想要的输出:
array1 = (Paige Buckley6 Govan Mayer King)
array2 = (Harrison Atkins Reinhardt Wilson)
array3 = (Vaughan Sergovia Terrega)
#then loop through the each array one after the other.
【问题讨论】:
-
你真的需要这些数组吗?如果您打算一个接一个地循环它们,那么为什么不在读取文件时立即执行您计划执行的任务呢?
-
另外,这不是your last question吗?我看到你改进了很多。但是,下次您的问题被关闭时,请对其进行编辑并要求关闭它的人重新打开。他们没有永久关闭您的问题,而是要求您改进它。
-
My goal is to create an array for each set of names这真的是你的目标吗?这听起来更像是其他方面的一小步。 -
@Socowi 感谢您的意见!这背后的逻辑是更大程序的一部分。不幸的是,它们需要位于单独的数组中,因为需要满足某些条件。如果我要组合这些数组,我稍后需要在代码中将它们分开。最初这是一个长文本文件。我有一个 awk 语句将文本集分解为 n 个值。那是我的问题。我会注意到这一点。
-
表面上这在 awk 中更容易做到,如果我们将 记录分隔符 定义为
\n\n并将 字段分隔符 定义为 @987654328 @。我担心的是 bash 并不适合“更大的程序”:所需的数据结构不存在。
标签: arrays bash shell loops scripting