gpt4 book ai didi

arrays - 如何按空行将文本文件拆分为数组?

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

我有一个以下列格式输出文本的 bash 命令:


Header 1
- Point 1
- Point 2

Header 2
- Point 1
- Point 2

Header 3
-Point 1
- Point 2

...

我想将此文本解析为一个数组,在空行上分隔,以便数组 [0] 例如包含:

Header 1
- Point 1
- Point 2

然后我想编辑数组中的一些数据,如果它满足某些条件的话。

我在看这样的东西Separate by blank lines in bash但我对 bash 完全陌生,所以我不明白如何将 awk RS=null 的输出保存到数组而不是打印出来。有人可以指出我正确的方向吗?

最佳答案

在使用 gnu awk 命令读取文件后,您可以使用 readarray 命令填充 bash 数组,空 RS awk 在空行上拆分记录并使用 ORS 作为 \0 (NUL) 字节:

IFS= readarray -d '' arr < <(awk -v RS= -v ORS='\0' '1' file)

检查输出:

echo "${arr[0]}"
Header 1
- Point 1
- Point 2

echo "${arr[1]}"
Header 2
- Point 1
- Point 2

echo "${arr[2]}"
Header 3
-Point 1
- Point 2

Online Demo

关于arrays - 如何按空行将文本文件拆分为数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57673497/

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