#!/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
ために使用されます。行が一致する場合は、その行が再度出力され、ファイルにリダイレクト(追加)されます。grep
file2.txt
grep
file2.txt
matches.txt
スクリプトが停止した理由は、2番目のループが入力を待っているためです。最初のループで行ったように、ファイル記述子にコピーするのstdin
を忘れました。いずれにせよ、追加のファイル記述子を作成する必要はありません。ループが端末の代わりにファイルから読み取られるようにリダイレクトするだけです。stdin
3
stdin
while