お世話になります。
次のようなテキストファイルを読み込んで重複を探し、表示したいのですが、Perlで、どのようなコードを書けば良いのでしょう。
尚、重複チェックは2通りあります。
パターン1 例えば1,2が2回以上出現する
パターン2 1,2と2,1や2,3と3,2は重複とみなす。
テキストファイル
1,2
1,3
1,4
1,5
2,1
2,3
2,4
2,5
3,1
3,2
1,2
チェック後の表示
1,2,重複
1,3,重複
1,4,
1,5,
2,1,重複
2,3,重複
2,4,
2,5,
3,1,重複
3,2,重複
1,2,重複
宜しくお願いします。
No.2ベストアンサー
- 回答日時:
解説:
while(<DATA>){#実際は、ファイルハンドル(か<>)になるべき所、DATAにしておくと、__END__から読み込める、この場合は、別にテキストファイルを作るのがめんどくさかったからと、これだけで実行(追試)ができるという意味
chomp;#末尾の改行を切り捨てる、引数が無い時は$_現在の読み込み行に対して実行される
$data[$i++]=$_;#現在の行を、あとで元データとして利用するために配列に入れておく
$test{$_}++;#既にあったかどうかテストするために行データをキーにハッシュにしておく、値は、出現回数
($a, $b)=split ",";#今読み込んでる行を「,」で分離する
$test{"$b,$a"}++;#逆順の並びでハッシュに登録
}
foreach $x (@data){#元のデータを順に取り出す
print "$x";#オリジナルの表示
print ",重複" if($test{$x}>1);#ハッシュで、2回以上カウントされていたら重複しているって表示する
print "\n";#改行をつけて一行分処理終わり
}
__END__
すみませんm(-_-;)m 解説ありがとうございます。
実は
>while(<DATA>){#実際は、ファイルハンドル(か<>)になるべき所、DATAにしておくと、__END__から読み込める
既にここから知りませんでした。オイなんで__END__から下のデータが読み込まれるんだ!
という感じです。
よくよくコメントを読みながら勉強します。
重ねてありがとうございました。
No.1
- 回答日時:
while(<DATA>){
chomp;
$data[$i++]=$_;
$test{$_}++;
($a, $b)=split ",";
$test{"$b,$a"}++;
}
foreach $x (@data){
print "$x";
print ",重複" if($test{$x}>1);
print "\n";
}
__END__
1,2
1,3
1,4
1,5
2,1
2,3
2,4
2,5
3,1
3,2
1,2
でっ・・・できた!あんなに悩んでいたのに、いとも簡単に作ってしまいはった!
といっても、コードの意味がわからん!
まずはありがとうございます。
だっだれかこのコードの意味を解説してください!おねがいします。(なんとのぉ~、うすぼんやりとはわかります)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Excel(エクセル) 重複データの抽出について 2 2023/07/21 14:52
- Visual Basic(VBA) ListView重複データ削除 2 2022/08/05 18:12
- その他(クラウドサービス・オンラインストレージ) Googleスプレッドシートについて 1 2022/05/11 15:26
- その他(プログラミング・Web制作) VBSでExcelファイル起動時、重複しても開くのを止めたい 1 2022/10/01 23:20
- Excel(エクセル) Excelで連続して重複する行数の違う列を参照する方法 5 2023/04/23 06:15
- Excel(エクセル) 表に書いてある単語を1つの行に重複させないで書き出したい。 複数の列行にそれぞれ職種が入力されている 6 2022/05/25 04:49
- Visual Basic(VBA) フォーム上のリストボックスに重複して表示しています 3 2022/10/19 11:55
- Excel(エクセル) Excel2019 列と列(2列)の数値の重複を調べたい 1 2023/05/11 13:35
- Excel(エクセル) 同じセルで重複している文字を削除したい 3 2022/11/15 12:55
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ハッシュ検索はなぜ速い
-
データベースでユーザーのパス...
-
ハッシュリスト。
-
どなたかこのプログラミングを...
-
プログラミングについて。 1つ...
-
電力自由化に今から乗るのは遅...
-
UWSCの終了の仕方
-
CやJAVa,Rubyなどプログラミン...
-
イベントの発生を待つ
-
VBA 二次元配列の1つ目を増...
-
配列を初期化する時ってどうす...
-
GIFアニメをループさせたくない
-
VBScript 配列
-
ループを回すという意味は何で...
-
配列について
-
プログラミングの流れ図の問題...
-
DataGridViewに配列の値を表示...
-
隣接交換法のアルゴリズムについて
-
正規表現に関する質問
-
ループフリー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ハッシュ検索はなぜ速い
-
文字列を変数名として扱う方法
-
まったく同じファイルのハッシ...
-
チェックデジットについて
-
列挙型と連想配列の違いを教え...
-
英語でのシャープとコメの呼び...
-
ハッシュ値が一致したデータは...
-
重複ファイルを削除したいので...
-
ハッシュの考え方、使用例を分...
-
ハッシュのハッシュを実現したい。
-
ハッシュリストって単にハッシ...
-
短いハッシュの作り方
-
データベースでユーザーのパス...
-
ハッシュ値によるファイルの同...
-
*(アスタリスク)の意味
-
多次元配列から重複を削除
-
perlで配列名を動的に作り出したい
-
Perlでハッシュや配列で重複す...
-
一意(ユニーク)かつ、ソート...
-
ハッシュマーク以降のアドレス取得
おすすめ情報