0

この質問に従いましたperl 2つのファイルを比較し、一致する行を出力し、ハッシュを使用して2つのファイル間で一致または一致しない行を見つけました。

しかし、ハッシュが行を再配置し、行を整理したいことがわかりました。結果を順番に取得するために複数の for ループを記述できますが、これはハッシュほど効率的ではありません。以前にこの問題に直面した人はいますか?解決策を教えてください

4

3 に答える 3

2

質問の意味がよくわからないかもしれませんが、

fgrep -xf file2 file1

十分ではありません?

また

fgrep -xf file1 file2

はい、そうではありませんperlが、短くシンプルで高速です...

于 2013-07-10T21:58:20.917 に答える
1

これは、2 つのステップで効率的に行うことができます。「一致する行」を見つけることができたが、それらの順序が間違っていると仮定しましょう。その後、単純grepにそれらを再編成できます。matchThem2 つの入力 (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
于 2013-07-10T21:53:53.617 に答える
1

挿入順序を保持するハッシュが必要な場合は、CPAN モジュールTie::IxHashを試してください。

于 2013-07-11T07:45:57.013 に答える