![]() |
|
|
Googleのunix.com
|
|||||||
| シェルプログラミングとスクリプティング KSH 、 CSH 、 shに、 bashの、はPerl 、 PHPは、削除するsed 、 Awkの、他のシェルスクリプトやシェルスクリプト言語についての質問の投稿はこちら。 |
その他のUNIXおよびLinuxフォーラムトピックは参考にすること
|
||||
| スレッド | スレッドスターター | フォーラム | 返信 | 最後の投稿 |
| 検索するファイルの2種類の差分ファイルから重複multuple | ricky007 | シェルプログラミングとスクリプティング | 2 | 2008年3月4日 01:46午後 |
| 比較/ディレクトリとサブディレクトリ間の差分? | andylee80 | UNIXのダミー質問と回答のため | 5 | 2007年7月12日 10:45午前 |
| スクリプトファイルを比較する | pulse2india | シェルプログラミングとスクリプティング | 0 | 2005年10月19日 05:32午後 |
| perlパッケージのディレクトリ-一*.午後に何が含まれている場合は、スクリプトの差分大和総研? | gusla | シェルプログラミングとスクリプティング | 1 | 2004年11月23日 08:32午後 |
| 2ファイルの差分;出力差分ファイルへの第3回 | blt123 | シェルプログラミングとスクリプティング | 2 | 2002年5月28日 12:29午後 |
![]() |
|
|
LinkBack | スレッドツール | このスレッドを検索 | スレッドを評価 | 表示モード |
|
|
|
||||
|
2の差分の2 coloum perlスクリプトを使用してファイルを比較する
やあ、
私に新しい午前 perlの ..スクリプティング私はまだ.. learingは午前私は、執筆を依頼午前 perlの スクリプトは2種類のファイルの2 coloumsを比較する必要があります。これらの2 coloumn場合は、スクリプトと同じです2差分ファイルの両方の行を格納する必要があります。 これらのファイルは、 1個のファイル: 21767016 226112文字[ ] 19136520 797355 java.lang.String 17769368 307049 java.lang.Object [ ] 13981656 582569 java.util.HashMap $エントリー 10867240 16650 INTは[ ] 9065616 559799 java.lang.String [ ] 9060192 79626 java.util.HashMap $エントリ[ ] 6969384 23146バイト[ ] 6857664 285736 java.util.Vector 2ファイル: 21702192 904258 java.lang.String 20985320 360561 java.lang.Object [ ] 20524112 209810文字[ ] 12623280 525970 java.util.HashMap $エントリー 10945080 678896 java.lang.String [ ] 9781432 10871 INTは[ ] 8302464 345936 java.util.Vector 8107104 337796 netscape.ldap.util.RDN 7620024 68357 java.util.HashMap $エントリ[ ] 6515152 52272 * ConstMethodKlass 現在の両方があるので、私はjava.lang.stringので2ファイルにこれらの3 coloumnを比較するために、私が2例の両方のファイルの差分ファイルで、これらの製品ラインは、スクリプトを保存します。これらの2ファイル大きなファイルです。 私をお勧めしてくださいどのように行うことができます。いくつかの1つの場合は、ハッシュテーブルの実装を使用することを提案していた。 ありがとう、 Vasuki |
|
||||
|
このおそらく(未検証)してみてください: コード:
awk '
# load the contents of file1 into a hash indexed by $3
NR==FNR { file1[$3]=$0; next }
# check whether $3 in file2 is in the hash, if so, print bothlines to files
$3 in file1 { print file1[$3] >> "file1.both"; print >> "file2.both" }
' file1 file2
|
|
||||
|
とここに(ほぼ)に同じ Perlの: コード:
perl -ane 'BEGIN { open FILE1, ">file1.both"; open FILE2, ">file2.both"; }
if ($. == ++$n) { $h{$F[2]} = $_; close ARGV if eof; next; }
if ($h{$F[2]}) { print FILE1 $h{$F[2]}; print FILE2; }' file1 file2
これは非常に慣用されていません Perlのが、取得するのに十分な期待をする必要があります始めた。その卑劣な手段で $ Ñ および ARGV には、 Awkのシミュレートされ NR \u003d\u003d FNR 熟語。その EOFを ことで行番号をリセットすることです $ 。 ファイルの変更時に、参照してください EOFを 簡単な議論のためのドキュメント。 この方法は、 3ドルにすることで 6515152 52272 * ConstMethodKlass ているだけ" * " -かもしれませんが、正常化するのではなく、スクリプトを変更します。 |
|
||||
|
質問をするかどうかを正しく理解していない。 とにかく、 1つ下にいくつかの希望を意味することができます。 コード:
open (FH,"<a");
while(<FH>){
@arr=split(" ",$_);
$hash{$arr[2]}=$_;
}
close(FH);
open (FH,"<b");
while(<FH>){
@arr=split(" ",$_);
if(exists($hash{$arr[2]})){
print $hash{$arr[2]};
print $_;
}
}
close(FH);
|