我有一个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 行仅影响以 结尾的行<
(因为<$
),并捕获第一对之间和 '><' 之间的模式<>
,并将所有内容粘贴回末尾复制第一对(加上结束的 '>')
答案2
这是一个 perl 方法,本质上与 Anthon 的解决方案相同sed
:
$ perl -pe 's/<(.+)>(.+)</<$1>$2<\/$1>/' file
<sss>ss</sss>