ファイルからデータを抽出し、正しい形式で出力するための実用的な方法を見つけようとしています。
たとえば、data.txt というファイルがあり、その内容は次のようになっているとします。
abc 123
def 456
次に、スクリプトを使用してデータを解析し、次のように表示します。
first abc second 123
third def fourth 456
これまでに作成したものは次のとおりです。
#!/bin/sh
#
for i in data.txt; do while read -r a b; do
echo "First $a second $b"
echo "third $a fourth $b"
done < data.txt
done
出力は次のようになります。
First abc second 123
third abc fourth 123
First def second 456
third def fourth 456
つまり、data.txt の各行を読み取ってそれを一度適用し、次の行に進むのではなく、同じデータを次の echo コマンドに適用し続け、次の行に進みます。おそらく単純なことを見落としているのだと思いますが、長い一日でした。:)
答え1
1回のループで2回の読み取りを実行できる
#!/bin/sh
while read -r a b && read -r c d; do
echo "First $a second $b"
echo "third $c fourth $d"
done < data.txt
実際のアプリケーションによっては、xargs
ex も検討する必要があるかもしれません。
xargs -L2 /bin/printf 'First %s second %s\nthird %s fourth %s\n' < data.txt