【发布时间】:2017-06-28 20:17:15
【问题描述】:
我有一个以以下模式输出的命令
red
yellow
blue
green
--------
black
brown
pink
我想将“----”之前的列表读入一个数组,另一半读入另一个数组。
我知道这可以使用循环来完成。但我也认为这可以通过使用 SED 或 AWK 非常优雅地完成,问题是我不知道如何。我真的很感激这方面的任何帮助。我非常有信心这是可能的,但如果我错了或者有更好/更聪明的方法,请告诉我。
【问题讨论】:
-
发布您的尝试以及您被阻止的位置。
-
这也不是一个好方法,只有当你没有其他方法可以用你的原始命令来控制它时,才能像这样发布处理命令输出。
-
我想了解更多关于这个问题的起源。你的实际用例是什么?我们能否得到一些确认(一旦你提出一个真正的问题)它不是XY problem ?
-
我了解到您想创建一个 Bash 数组。除了读取它们的输出之外,您不能使用
awk或sed创建 Bash 数组。如果你想将它们的输出分成两个数组,你仍然需要逐行读取它们的输出来检测你的分隔线,不管你打算如何创建数组。您的最佳解决方案可能会涉及某种循环或逐行解析。 -
我需要限定我之前的评论:您可以通过两次读取输入来实现您想要的,并在第一次运行时使用
sed/awk返回分隔符之前的行,并且第二次运行分隔符后的行,并执行两个单独的分配。