2つのファイルがあり、最初のファイルには出力があり、他のファイルにはテンプレートがあります。値をハードコードせずに出力のテンプレートにIDを追加したいと思います。
Output.txt,
abc 8392382222
def 9283923829
ghi 2392832930
Template file,
Pool : 1
Some text
Some text
Some text
name:
no:
London
UK
name:
no:
London
UK
name:
no:
London
UK
Pool : 2
Some text
Some text
Some text
name:
no:
London
UK
name:
no:
London
UK
name:
no:
London
UK
以下のようにテンプレートに出力ラインを追加したいと思います。
Pool : 1
Some text
Some text
Some text
name: abc
no: 8392382222
London
UK
name: def
no: 9283923829
London
UK
name: ghi
no: 2392832930
London
UK
Pool : 2
Some text
Some text
Some text
name: abc
no: 8392382222
London
UK
name: def
no: 9283923829
London
UK
name: ghi
no: 2392832930
London
UK
ベストアンサー1
Bashを使用すると、同時に2つのファイルを読み取ることができます。別のファイル記述子にリダイレクトするだけです。
#!/bin/bash
while read -r -a values ; do
for i in {0..3} ; do
read -u 3 line
echo "$line ${values[$i]}"
done
done < output.txt 3<template.txt
通常、テンプレートファイルには繰り返す必要がある4行しか含まれていないため、配列として読み取ることができます。今後値を含むファイルを処理するため、追加の記述子は必要ありません。
#!/bin/bash
template=()
while read -r line ; do
template+=("$line")
done < template.txt
while read -r -a values ; do
for (( i=0; i<${#template[@]}; ++i )) ; do
echo "${template[$i]} ${values[$i]}"
done
done < output.txt