sed は中間大文字の単語を 1 行ずつ置き換えます。

sed は中間大文字の単語を 1 行ずつ置き換えます。

一部のスキャンをプレーンテキストに変換するためにOCRを使用していますが、残念ながら、一部のフォントのプレーン文字「fi」は大文字Wで読み取られます。これで、すべてのWを「fi」に置き換える必要があり、これらのWは実際の英語では単語の真ん中に大文字のWが現れないという事実と簡単に区別できます。したがって、すべての単語の真ん中にある大文字Wを文字fiに置き換えるsed一行ステートメントが必要です。

ベストアンサー1

大文字 W は単語の末尾には表示されませんが、すべて大文字の略語には現れます。そのためW、小文字の直後に来るか、大文字の次と小文字(aWre)の前に来ると交換します。

sed -e 's/\([[:lower:]]\)W/\1fi/g' -e 's/\([[:alpha:]]\)W\([[:lower:]]\)/\1fi\2/g'

これは含まれていませんfifi(私の最大の単語のリストは「fifing」でのみ見つけることができます)。さらに、これにはW単語の先頭は含まれません。 2番目の文字を見ると、いくつかのケースがわかりますが、それでも始まる多くの単語がありませんfi。英語では、Wの後に多くの文字が表示されません。

… -e 's/\([^[:alnum:]]\)W\([b-dfgj-npqstv-xz]\)/\1fi\2/g' \
  -e 's/^W\([b-dfgj-npqstv-xz]\)/fi\2/'

より正確な結果を得て他の言語を処理するには、より洗練された辞書ベースのアプローチに切り替えることができます(高度なOCRシステムはしばしばこのアプローチを使用しますが、明らかにシステムは十分に進歩していません)。

おすすめ記事