この質問に従いましたperl 2つのファイルを比較し、一致する行を出力し、ハッシュを使用して2つのファイル間で一致または一致しない行を見つけました。
しかし、ハッシュが行を再配置し、行を整理したいことがわかりました。結果を順番に取得するために複数の for ループを記述できますが、これはハッシュほど効率的ではありません。以前にこの問題に直面した人はいますか?解決策を教えてください
この質問に従いましたperl 2つのファイルを比較し、一致する行を出力し、ハッシュを使用して2つのファイル間で一致または一致しない行を見つけました。
しかし、ハッシュが行を再配置し、行を整理したいことがわかりました。結果を順番に取得するために複数の for ループを記述できますが、これはハッシュほど効率的ではありません。以前にこの問題に直面した人はいますか?解決策を教えてください
質問の意味がよくわからないかもしれませんが、
fgrep -xf file2 file1
十分ではありません?
また
fgrep -xf file1 file2
はい、そうではありませんperl
が、短くシンプルで高速です...
これは、2 つのステップで効率的に行うことができます。「一致する行」を見つけることができたが、それらの順序が間違っていると仮定しましょう。その後、単純grep
にそれらを再編成できます。matchThem
2 つの入力 (file1
およびfile2
) を受け取り、それらを に出力するスクリプトがあると仮定するとtempFile
、全体のスクリプトは次のようになります。
matchThem file1 file2 > tempFile
grep -Fx -f tempFile file1
-Fx
フラグの意味は次のとおりです。
-F : find exact match only (much faster than wildcards)
-x : only match whole lines
挿入順序を保持するハッシュが必要な場合は、CPAN モジュールTie::IxHashを試してください。