これを実行する良い方法を見つけようとしましたが、不幸にも私は見つけられませんでした。パターンに基づいてファイル内の繰り返し線を削除します
私はこのフォーマットを持つファイルで働いている:
=クラスタ=
SPEC PRD000681; PRIDE_Exp_Complete_Ac_22491.xml;スペクトル= 1074真
SPEC PRD000681; PRIDE_Exp_Complete_Ac_22498.xml;スペクトル= 2950真=クラスタ=
SPEC PRD000681; PRIDE_Exp_Complete_Ac_22498.xml;スペクトル= 1876真
SPEC PRD000681; PRIDE_Exp_Complete_Ac_22498.xml;スペクトル= 3479真
SPEC PRD000681; PRIDE_Exp_Complete_Ac_22498.xml;スペクトル= 3785真=クラスタ=
SPEC PRD000681; PRIDE_Exp_Complete_Ac_22493.xml;スペクトル= 473真
SPEC PRD000681; PRIDE_Exp_Complete_Ac_22493.xml;スペクトル= 473真
ご覧のとおり、すべてのSPEC回線は、文字列スペクトルの番号が繰り返される最後のものを除いて異なります。 私がしたいのは、パターン=Cluster=
の間にすべての情報を取り、スペクトル値が繰り返されている行があるかどうかを確認することです。複数の行が繰り返されている場合は、1つを除くすべての行を削除します。
出力ファイルは次のようにすべきである:
=クラスタ=
SPEC PRD000681; PRIDE_Exp_Complete_Ac_22491.xml;スペクトル= 1074真
SPEC PRD000681; PRIDE_Exp_Complete_Ac_22498.xml;スペクトル= 2950真=クラスタ=
SPEC PRD000681; PRIDE_Exp_Complete_Ac_22498.xml;スペクトル= 1876真
SPEC PRD000681; PRIDE_Exp_Complete_Ac_22498.xml;スペクトル= 3479真
SPEC PRD000681; PRIDE_Exp_Complete_Ac_22498.xml;スペクトル= 3785真=クラスタ=
SPEC PRD000681; PRIDE_Exp_Complete_Ac_22493.xml;スペクトル= 473、真の私が使用してファイルを分割するために、これを使用してい
パターンが繰り返されているかどうかを確認する方法はわかりません。
#!/usr/bin/perl
undef $/;
$_ = <>;
$n = 0;
for $match (split(/(?==Cluster=)/)) {
open(O, '>temp' . ++$n);
print O $match;
close(O);
}
PD:Perlを使用した方が簡単でしたが、私はPythonも理解しています。
は、連続する重複行はありますか? – Toto