繰り返し始まるテキスト行のリンク

繰り返し始まるテキスト行のリンク

次の形式の行を含む長いテキストファイル(stardict-editorのタブファイル)があります。

word1  some text
word1  some other text
word2  more text
word3  even more

そしてそれを次に変換したいです。

word1  some text<br>some other text
word2  more text
word3  even more

これは、同じ単語(ファイルがソートされている)で始まる後続の行を単一の行(ここではdelimitedと定義されている<br>)にマージする必要があることを意味します。同じ開始行が複数回表示されることもあります。単語と定義を区別する文字はタブ文字であり、各行で一意です。word1、、word2word3もちろん、私が事前に知らない任意のコンテンツ(タブと改行を除く)のプレースホルダーです。

これを行うには、より長いPerlコードを考えることができますが、Perlまたはコマンドラインに簡単な解決策があるかどうかを知りたいです。どんなアイデアがありますか?

ベストアンサー1

perl -p0E 'while(s/^((.+?)\t.*)\n\2\t/$1<br>/gm){}' 

(6年後の私のラップトップでは、150万行の23MB辞書を処理するのに2秒かかります。)

おすすめ記事