そのために sed を使用できます:
sed -n -e 's/.*<b>\([^<]*\)<\/b>.*/\1/p' index.html
「-n」フラグは、指定した行のみを印刷するようにsedに指示します。
「s」コマンドは、正規表現に一致する文字列を別の文字列に置き換えます。正規表現 (regex) について説明します。
.*
文字列にマッチ
<b>
それぞれの文字列に一致します
\([^<]*\)
はもう少し複雑です。手始めに、バックスラッシュで始まる括弧は、一致するものを補助変数に格納するように sed に指示します。は[^<]
文字以外の任意の文字<
と一致し、その後に続くアスタリスクは、そのシーケンス (つまり、 ではない文字のシーケンス) と一致する必要があることを示します<
。
<\/b>
は文字列に一致し</b>
ますが、正規表現の終わりだと sed を混乱させないように、スラッシュ文字をバックスラッシュでエスケープする必要があります。
.*
別の文字列に一致
正規表現の後に、何を代用するかを sed に伝える文字列が続きます。この場合、\1
最初のキャプチャ グループを出力するように sed に指示するだけです (つまり、上記のパート 3 が一致したすべて、つまり と の間のすべてを意味します<b>
) </b>
。
最後に、最後のスラッシュの後に、置換された行を「p」文字で出力するように sed に指示します。上記の「-n」フラグを使用したため、正規表現と一致しない行は出力されません。
これが役立つことを願っています=)