sed、awk、または他のコマンドを使用して閉じるタグを埋める方法は?

sed、awk、または他のコマンドを使用して閉じるタグを埋める方法は?

txt次のファイルがあります。

<sss>ss<

または

<firstword>anotherword<

私はこれがこんな感じです。

<sss>ss</sss>

または

<firstword>anotherword</firstword>

デフォルトでは、最初の単語を取得して閉じるタグに入れます。

私が何を試したか、答えが何であるかを尋ねる前に何も考えることはできません。

答え1

入力があります:

<abc>def<
<firstword>anotherword</firstword>
<ghi>klm<

使用:

sed 's/<\([^>]*\)>\(.*\)<$/<\1>\2<\/\1>/' input

出力:

<abc>def</abc>
<firstword>anotherword</firstword>
<ghi>klm</ghi>

sed行は<(because <$)で終わる行にのみ影響し、最初のペアと '> <'の間のパターンをキャプチャし、最初のペア<>(最後の '>'を含む)をコピーして最後にすべてを貼り付けます。

答え2

以下は、Anthonのソリューションと本質的に同じPerlアプローチですsed

$ perl -pe 's/<(.+)>(.+)</<$1>$2<\/$1>/' file
<sss>ss</sss>

関連情報