スクリプト内の2つのファイルの比較

スクリプト内の2つのファイルの比較
#!/bin/bash
while read file1 <&3; do
     while read file2 ; do       
        if [ $file1 == $file2 ] ; then
         $file1 >> /infanass/dev/admin/test/newlist.txt
        fi
    echo "$file1"
    echo "$file2"
 done 3</infanass/dev/admin/test/file2.txt
done 3</infanass/dev/admin/test/file1.txt

file1.txtから1行を読んでから、file2.txtを繰り返して一致するものがあることを確認し、それを新しいテキストファイルに書きたいと思います。

無限ループがあると思います..

ベストアンサー1

より簡単な方法はどうですか?

while read line do
    grep "^$line$" file2.txt >>matches.txt
done < file1.txt

説明する:

これは行を繰り返し、その中の正確な行を見つけるfile1.txtために使用されます。行が一致する場合は、その行が再度出力され、ファイルにリダイレクト(追加)されます。grepfile2.txtgrepfile2.txtmatches.txt

スクリプトが停止した理由は、2番目のループが入力を待っているためです。最初のループで行ったように、ファイル記述子にコピーするのstdinを忘れました。いずれにせよ、追加のファイル記述子を作成する必要はありません。ループが端末の代わりにファイルから読み取られるようにリダイレクトするだけです。stdin3stdinwhile

おすすめ記事