重複した行を削除したい! 行の並べ替えをしない Perl スクリプト

シェアする

同じ行の繰り返しが気になる

the rest of the family
(きみたちは──みんな違うからいいんだよ)

コマンドライン・シェル「NYAOS」のログなど、重複する行が いくつもあるファイルは、ものすご~~~く気になります。

いままでは、「そ~太」というツールを使っていました。ところが、「行を並べ替えてから、前後で同じ行を削除する」という仕様です。

名前のとおりで正しい。でも、モヤモヤが残る──。

もっと、こう、ドラッグ──────アンド・ドロップ的な手軽さで、気持ちよくスッキリしたいピー!(ピー?)

『ULTIMATE Perl』に答えあり

山ほどある「買ったけれど理解できなかったプログラミング本」を、なんとなく読み返してみる──。すると、水野 貴明氏の『ULTIMATE Perl』に、そのものずばりの答えが載っていました!

Array Unique

収録されているコードは、「Perl メモ」からの出典でした。全 Perl プログラマ必読のサイトですよね! 「何年前に終わっている話だよ!」と幻聴が聞こえてくる。

Perlメモ #ArrayUnique

コピー・アンド・ペーストでも良いけれど、勉強をかねて自分なりの味付けをしたコードが、こちらになります(料理がヘタな人間ほど、勝手にレシピを変えるよね)。

クリップボードにコピーした文字列から重複した行だけを削除する! — Gist

使い方は簡単で、ただ実行するだけ!

くどい書き方(単純な split に m, s, x オプション)をしているのは、「Perl::Critic」で怒られないようにするためです。

map を使う方法

id:fbis さんが同じ話題で記事を書かれていました。

Hashを使って配列をユニークにしよう! – Unknown::Programming

ここで紹介されている「List::MoreUtils」(バージョン 0.22)のコードが渋い。 map でも できるのか!

ただ、そのあとのバージョンを追っていくと、新旧どちらも問題があるようです。「なにが問題か」を学ぶチャンスですね!

List::MoreUtilsのuniq関数の実装が変わってた件 – Unknown::Programming

おわりに

昨日・今日の記事みたいに、「クリップボードの中身を書き替える」スクリプト(の断片)をいくつか作りました。

YouTube の「埋め込みコード」を Valid にする! HTML5 時代編 | 亜細亜ノ蛾

ただ、あまりにも「オレ(だけ)得」なツールばかりなので、なかなか公開しにくい。なるべくアウトプットしていきます。

スポンサーリンク

シェアする

フォローする