gpt4 book ai didi

arrays - 从 bash 输出中获取值

转载 作者:行者123 更新时间:2023-11-29 09:25:44 26 4
gpt4 key购买 nike

更新:这个问题的回答要简单得多,结果根本不需要 grep。哇,我脸红了!

我是 bash 编程的新手,所以可能有一个简单的答案,但是虽然我的谷歌搜索已经找到了很多 bash grep 示例和很多 bash 数组示例,但我没有找到任何我能想到的东西了解如何适应我正在尝试做的事情。

基本思想是我想从另一个程序的输出的每一行中提取一位,并将它们放入一个数组中。假设这是输出:

_ filename1 2015-11-06
. filename2 2015-11-04
X filename3 2015-11-01
_ filename4 2015-10-22

那里的所有内容都是用空格分隔的,而不是用制表符分隔的。

我想要做的是在 bash 中获取一个数组,其中 文件名,没有其他内容。因此,针对示例运行它的结果将是一个包含四项的数组。我设法创建了包含所有按空格分隔的序列(因此 12 项)和大量空数组的数组,但无法弄清楚如何只获取文件名。

我使用的是旧版本的 bash,它不是我要升级的版本(3.2.53(1)-release),所以 readarray 不可用。

感谢您的帮助!

最佳答案

您可以使用cut 获取第二个字段并将其放入数组中:

arr=($(command | cut -d ' ' -f 2))

另一个纯 BASH 选项是使用 process substitution :

arr=()
while read -r _ fn _; do
arr+=("$fn")
done < <(command)

编辑:要处理带空格的文件名,请使用:

arr=()
while read -r fn ; do
fn="${fn#* }"
arr+=("${fn% *}")
done < <(command)

关于arrays - 从 bash 输出中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33571022/

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