次の形式の行を含む長いテキストファイル(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
、、word2
はword3
もちろん、私が事前に知らない任意のコンテンツ(タブと改行を除く)のプレースホルダーです。
これを行うには、より長いPerlコードを考えることができますが、Perlまたはコマンドラインに簡単な解決策があるかどうかを知りたいです。どんなアイデアがありますか?
ベストアンサー1
perl -p0E 'while(s/^((.+?)\t.*)\n\2\t/$1<br>/gm){}'
(6年後の私のラップトップでは、150万行の23MB辞書を処理するのに2秒かかります。)