2つのテキストファイルを読み、各行をリンクします。

2つのテキストファイルを読み、各行をリンクします。

同じ長さの2つのテキストファイルが順番に並べられています。一つは製品で、もう一つは製品比較です。各行の出力が「製品;比較」になりたいです。はい、スプレッドシートに入れてcsvにエクスポートできますが、bashでこれを行う方法を知りたいです。これら2つのファイルはパラメータとして提供されます。

#!/bin/bash
file1="$1";
file2="$2";
separator=";";
while read -r product
do
  read -r comp < "$file2";
  echo $product $separator $comp >> temp.txt;
done < "$file1"
tr -d " " < temp.txt | sort > out.txt
rm temp.txt

これにより、同じ比較製品を持つすべての製品が提供されます。例えば

$: cat out.txt
product1;comp1
product2;comp1
product3;comp1

私は間違いなくcompファイルの1行を正しく読み取っていません。私が何を間違っているのでしょうか?一行を読む方法?

ベストアンサー1

Bashでこれを本当に行うには、-u fd番号付きストリームを使用して2つのファイルを同時に読み取るオプションを使用することをお勧めします。

while read -r -u3 product; read -r -u4 comp; do 
  printf '%s;%s\n' "$product" "$comp"
done 3<products.txt 4<comps.txt

ただし、pasteユーティリティを使用できます

paste -d\; products.txt comps.txt

おすすめ記事