我希望将特定的数组值添加到文本文件中特定行的开头。
例如,如果我有一个数组animals=(cat, dog, bird, lizard)和一个如下所示的文本文件:
.color
.age
.size
.breed
.name
.color
.age
.size
.color
.age
.size
.breed我怎么能把猫排到第1-5行,狗第6-8行,鸟第9-13行。(每种动物都有不同数量的切片)
输出文本文件应该如下所示:
cat.color
cat.age
cat.size
cat.breed
cat.name
dog.color
dog.age
dog.size
Bird.color
Bird.age
Bird.size
Bird.breed任何帮助都是非常感谢的:)
发布于 2019-11-05 12:10:24
看起来空行是分隔符,所以我们可以使用:
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发布于 2019-11-05 10:39:59
我怎样才能把cat放在第1-5行,然后把狗放到第6-…行?
我们还可以滥用join在不存在的字段上加入:
join --nocheck-order -j2 <(printf %s\\n ${animals[*]}) <(head -5 text)|tr -d ' 'https://stackoverflow.com/questions/58709013
复制相似问题