我有一个XML文件,其行如
...
<Placemark>
<name>ACME Pinerolo TO - 31/05/2017</name>
...
</Placemark>
...
<Placemark>
<name>SOME OTHER COMPANY Caselecchio BO - 21/06/2016</name>
...
</Placemark>
...
<Placemark>
我想要实现的最终结果是
...
<Placemark>
<name>TO 170531 ACME Pinerolo TO</name>
...
</Placemark>
...
<Placemark>
<name>BO 160821 SOME OTHER COMPANY Caselecchio</name>
...
</Placemark>
我认为可以使用awk,sed,xargs,而无需解析XML,但我不知道如何。
答案 0 :(得分:1)
使用GNU sed for EREs和\ s + \ S:
$ sed -E 's:(<name>)(.*)\s+(\S+\s+)-\s+([0-9]+)/([0-9]+)/[0-9]{2}([0-9]+):\1\3\6\5\4 \2:' file
...
<Placemark>
<name>TO 170531 ACME Pinerolo</name>
...
</Placemark>
...
<Placemark>
<name>BO 160621 SOME OTHER COMPANY Caselecchio</name>
...
</Placemark>
...
<Placemark>
idk如何让“TO”出现在1行的末尾,而不是“BO”出现在另一行的末尾,或者如何将21/**06**/2016
转换为16**08**21
- 我认为这些是拼写错误你的预期产出。
上述内容当然是脆弱的,并且基于您问题中的有限信息和示例,因此YMMV将其用于其他数据。