Awkを使用したテキストの単語バイグラムの識別と逆方向

Awkを使用したテキストの単語バイグラムの識別と逆方向

私はアニメが好きで、主に字幕付きのアニメを視聴します。時々、下流の人々は西洋人のように名前を城の前に置くように名前を並べ替えます。本当に好きではありませんが、名前の順序を変更しようとして字幕ファイルを手動でナビゲートするのは時間の無駄です。私はAwk(またはAwkが正しい選択ではない場合は他の標準のLinuxユーティリティ)を使用してテキスト内の大文字で始まり、常に一緒に表示される単語(タプル)を検索して順序を変更したいと思います。スペースと記号は単語区切り記号でなければなりません。これは誤検知が発生しないのに十分でなければなりません。

たとえば、すべてのインスタンスMiu Matsuokaをに変換する必要がありますMatsuoka Miu

答え1

この試み、

sed -r -e "s:([A-Z][a-z]+)\s([A-Z][a-z]+):\2 \1:g" subfile > newsubfile

または、元のファイルを次のように変更できます。

sed -i -r -e "s:([A-Z][a-z]+)\s([A-Z][a-z]+):\2 \1:g" subfile

正規表現は、([A-Z][a-z]+)\s([A-Z][a-z]+)大文字で始まる2つの連続した単語を選択し、sedその順序を逆にします。これがすべてのテストケースと一致することを確認してください。いくつかのテストをしましたが、効果がありました。

関連情報