bash - 用 BLOCKS 行填充 bash 数组

标签 bash shell awk

我有一个文件(或命令的输出),其中包含由空行分隔的行 block - 如下所示:

1
2
3

4
5
6

无法弄清楚如何用每个数组单元格的行“ block ”填充 bash (4.4.12) 数组,例如

arr[0]='
1
2
3'

array[1]='
4
5
6'

使用 readarraymapfile 寻找类似线程,使用 IFS/read 和其他替代方案,但无法弄清楚该怎么做行的“ block ”,而不仅仅是一次一行。 什么是魔法组合?

最佳答案

使用 bash:

declare -i c=0                      # set integer attribute

while IFS= read -r line; do
  [[ -z $line ]] && c+=1
  arr[$c]+="$line"$'\n'
done < file

declare -p arr                      # output array

输出:

declare -a arr=([0]=$'1\n2\n3\n' [1]=$'\n4\n5\n6\n')

关于bash - 用 BLOCKS 行填充 bash 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63495280/

相关文章:

awk - 最佳 awk 命令

linux - 空闲 5 分钟后切换桌面 (xprintidle) : crontab or daemon?

linux - 使用 shell 脚本反转旧补丁后应用新补丁

unix - 搜索文件中最后一次出现的模式并删除之后的所有内容,不包括模式行

java - 将 System.out 发送到文件和 Commons Logging

Shell 脚本 - 处理数组中的 float 数学运算,而不先将值放入 var 中?

awk - 如何在awk中手动设置记录分隔符?

python - 从 python 解释器内部创建管道

vb.net - 通过 Visual Basic 应用程序在 Unix 服务器上执行命令

r - 执行一系列 R 脚本的最佳实践是什么