linux - 如何将数组值添加到文本文件中特定行的开头

标签 linux bash scripting

我想将特定的数组值添加到文本文件中特定行的开头。

例如,如果我有一个数组 animals=(cat, dog, bird, lizard) 和一个如下所示的文本文件:

.color
.age
.size
.breed
.name

.color
.age
.size

.color
.age
.size
.breed

我如何在第 1-5 行前面加上 cat,在第 6-8 行前面加上 dog,在第 9-13 行前面加上 bird。 (每只动物的节数不同)

输出的文本文件应该是这样的:

cat.color
cat.age
cat.size
cat.breed
cat.name

dog.color
dog.age
dog.size

Bird.color
Bird.age
Bird.size
Bird.breed

非常感谢任何帮助:)

最佳答案

看起来空行是分隔符所以我们可以使用它:

a=(cat dog bird lizard)
i=0 ac=${#a[@]}

while IFS= read -r line; do
   [[ $line =~ ^$ ]] && { ((i = (i + 1) % ac)); printf '\n';  continue; }
   printf '%s\n' "${a[i]}$line"
done < file

关于linux - 如何将数组值添加到文本文件中特定行的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58709013/

相关文章:

bash - 如何提高一个人的 bash/命令行技能?

bash - 这个 bash 脚本有什么问题吗?

c - Linux 计时器 CLOCK_PROCESS_CPU_ID 不工作

linux - 如何从文件中每一行的字符串中选择第 n 个字符?

c - "implicit declaration of function"与函数原版的区别

linux - 如何在bash中将变量分配给同一目录中文件的不同扩展名

Bash:如果存在,如何复制目录的文件

html - 根据 HTML 表格中的条件更改列颜色

linux - 手动将进程置于 sleep 状态时是否存在竞争条件

asp.net - 通过 jQuery 加载包含内联脚本的 HTML 内容