如何使用 sed、awk 或任何其他命令填充结束标记?

Dis*_*ame 5 bash sed awk text-processing

我有一个txt看起来像这样的文件:

<sss>ss<
Run Code Online (Sandbox Code Playgroud)

或者

<firstword>anotherword<
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像这样

<sss>ss</sss>
Run Code Online (Sandbox Code Playgroud)

或者

<firstword>anotherword</firstword>
Run Code Online (Sandbox Code Playgroud)

基本上取第一个单词并将其放在结束标记中。

在你问我尝试过什么之前,答案是什么,我什么也想不出来。

Ant*_*hon 10

有输入:

<abc>def<
<firstword>anotherword</firstword>
<ghi>klm<
Run Code Online (Sandbox Code Playgroud)

用:

sed 's/<\([^>]*\)>\(.*\)<$/<\1>\2<\/\1>/' input
Run Code Online (Sandbox Code Playgroud)

输出:

<abc>def</abc>
<firstword>anotherword</firstword>
<ghi>klm</ghi>
Run Code Online (Sandbox Code Playgroud)

sed 行仅影响以<(由于<$)结尾的行,并捕获第一<>对之间和 '><' 之间的模式,并将所有内容粘贴回末尾复制第一对(加上结束的 '>')

  • @NaftuliTzviKay 我知道您无法使用 sed 解析 html 或 CSV 的所有荣耀,为此您需要一个解析器。但是 OP 一开始就没有正确的 HTML/XML,因此真正的解析器将无休止地呕吐。 (3认同)