|
|
|
|
|||
|
Perlの- 2配列の比較
こんにちはすべて、
私は以下のスクリプトを記述しては、ファイル1とファイル2の内容をこのようなものになるだろう: ファイル1 : 56790,0,0,100998765 89756,0,0,100567876 867645,1,3,678777654 ファイル2 : 56790,0,0,100998765 65776,0,0,4766457890 +5896,0,0,675489876 何をやってみたいし、各行に4個の場合、カンマで区切った値をチェックされ、他のファイルをどこかに存在する。これは明らかに一線を上記の場合には、両方のファイル56790,0,0,100998765ているので、私はtrueを返すことにしたいのですがされています。私は、他のファイルに存在しない場合はfalseを返すすべての行をしたいと思います。各ファイル形式の列の値の順序も重要です。 これまでのところ私は: $ input_file1 \u003d " home/file1 " ; ( DAT1 、 $ input_file1オープン) | |印刷する"ファイル1を開けませんでした! " ; @ raw_data1 \u003d <DAT1> ; 近い( DAT1 ) ; $ input_file2 \u003d " home/file2 " ; ( DAT2 、 $ input_file2オープン) | |印刷する"ファイル2を開くことができません! " ; @ raw_data2 \u003d <DAT2> ; 近い( DAT2 ) ; ライン( @ raw_data1 ) $ foreachの ( ( $ライン)チョップ; ( $ v1 、 $ v2では、 $ v3の、 $ v4の) \u003d分割(/,/,$ライン) ; ( $ v1 ... ...もし... ... このポイントは、私は動けなくなるのだ。私はたくさんのは、各配列からたった1つの値を比較するが、私は私のすべてのカンマ区切りの値の4まったく同じ順序で、他の配列に存在していることを確認する例を見たことがある。 任意のアイデアですか? 事前に、感謝します。 |
| スポンサーリンク | ||
|
|
|
|||
|
つまり、入力データの2つのパスを必要とし、一時ファイルを使用しています。 awkはあなただけでは良い結果を出すことができます。
コード:
awk 'NR == FNR { a[$0]++; next } { if (a[$0]) next; print }' file1 file2
...ファイル1はファイル2には存在していないすべての行を出力します。 に同じ Perlの: コード:
perl -nle 'if ($. == ++$i) { $a{$_}++; close ARGV if eof; next; }
print unless $a{$_}' file1 file2
|
![]() |
| ブックマーク |
| スレッドツール | このスレッドを検索 |
| 表示モード | このスレッド |
|
|
その他のUNIXおよびLinuxフォーラムトピックは参考にすること
|
||||
| スレッド | スレッドスターター | フォーラム | 返信 | 最後の投稿 |
| Perlやネット: : LDAPのは、オブジェクトや配列のクエリ | mikie | シェルプログラミングとスクリプティング | 3 | 2008年8月22日 04:05午後 |
| Perlの配列とSubstituion | ポパイ | シェルプログラミングとスクリプティング | 1 | 2008年5月6日 06:29午前 |
| perlの関数や配列 | mercuryshipzz | シェルプログラミングとスクリプティング | 1 | 2008年1月17日 03:18午後 |
| shには2つの配列の比較、または2つのフィールドを比較する | rijeshpp | シェルプログラミングとスクリプティング | 0 | 2007年10月31日 02:47午前 |
| perlの配列 | crashnburn | 高レベルのプログラミング | 2 | 2002年8月5日 06:53午後 |