シェルスクリプトでは非常に新しいので、次の作業に問題があります。file1でも見つかった行をfile2から抽出し、新しいファイル3へ。私は(私はそれが基本的なgrepコマンドで動作します知っているが、私はループを備えた方法を見つける必要がある)File2のループを使用してfile1に存在するfile1の行を抽出します
はFile1
John 5 red books
Ashley 4 yellow music
Susan 8 green films
を
John
Susan
このため、ループを使用させていただいておりますFILE3ため
所望の出力は次のようになります
John 5 red books
Susan 8 green films
所望の出力は、bashスクリプトとループを使用して見つけなければなりません。私は、次のループを試してみましたが、私はこれを使って、結果にはいくつかの行をしないのです:
while read line
do
grep "${line}" $file1
done < $file2 >> file3.txt
誰もが私のスクリプトを改善する方法上の任意の考えや(再びループを使用して)任意の新しいアイデアを持っている場合、それは次のようになり大いに感謝します。ありがとうございました!
すでにgrepを使っているので、 'man grep'を読んで' grep -Ff file2 file1'を試してください。 'while'ループは必要ありません。 'grep'のいくつかのバージョンはそのオプションをサポートしていないので、' fgrep -f file2 file1'を試してください。また、 'fgrep'の中には、' -f'引数(おそらくは2Kという小さなもの)に使うことができるファイルのサイズを制限しているものもあります。がんばろう。 – shellter
あなたのご意見ありがとうございます。ループでこれを行う方法はありますか(たとえgrepを除外することを意味するとしても)。私の割り当ては、これを解決するためのループの使用を特に求めているので、私はそれを回避しようとしています。再度、感謝します! – Pablita
なぜ制約がありますか?標準の 'join'ユーティリティを使用できない理由はありますか? –