タグタグを使用した化学式のsed / awkの下付き文字数

タグタグを使用した化学式のsed / awkの下付き文字数

私は化学式と数字を含む説明を含む何百ものテキストファイルを持っています。数式の前には常にスペースがありますが、後にスペース、カンマ、ピリオドなどが続くことがあります。

問題は、数字を下付き文字で表示するように数式の形式が指定されていないことです。たとえば、次のようになります。

H2SO4、C5H11OH。

下付き文字をHTMLタグにフォーマットしたいと思います。たとえば、次のようになります。

H<sub>2</sub>SO<sub>4</sub>, C<sub>5</sub>H<sub>11</sub>OH

このように、下付き文字はHTML形式でレンダリングされます。たとえば、次のようになります。

H2SO4、C5H11OH

Java、PHPなどを使用してこれを達成しようとしましたが、実装は必然的に汚れて厄介です。私はエレガントなsed / awkの方法があると思います。

明らかに解決策のいくつかは、数式検出メカニズムで文字の後に1つ以上の数字が続く正規表現を作成することです(エラーがある可能性があり、後で手動で修正します)。次に、このように決定された式が与えられたら、sed置換のために、各数字または数字シーケンスの前にラベルを追加し、subその後にサブラベルクロージャを追加する必要があります。

これを行う行があるはずですが、理解できません。

どんなアイデアがありますか?

ベストアンサー1

たとえば、

sed -r 's:([A-Za-z])([0-9]+):\1<sub>\2</sub>:g'  

仕事をしなければなりません。

(文字と数字のグループを一致させ、それを\ 1と\ 2として覚えてください。これらをすべて同じ文字(\ 1)とトークンに含まれる数字のグループ(\ 2)に置き換えます。 sub

おすすめ記事