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>