我尝试使用bash脚本更改文件中时间的格式。
当前时间格式: 08:05:00
目标时间格式: 8-05
还有其他时间戳我不想在文件中更改,我要更改的每个实例都包含在xml中:
时间="当前时间格式"
有人可以帮忙吗?
答案 0 :(得分:1)
您必须使用XML解析器来解决此问题。我会用XML解析库和日期时间解析库附带的语言来实现。 Python适合该法案
import xml.etree.ElementTree as ET
from datetime import datetime
import sys
tree = ET.parse(sys.argv[1])
# for each element with a "time" attribute, alter the format of the attribute value
for elem in tree.findall('.//*[@time]'):
time = datetime.strptime(elem.get('time'), '%H:%M:%S')
elem.set('time', time.strftime('%k-%M').lstrip())
# print the new XML to stdout
print(bytes.decode(ET.tostring(tree.getroot())))
测试:
$ cat file.xml
<root>
<a>
<b time="08:05:00">
<c>text contains time 08:05:00</c>
</b>
<d foo="bar" time="19:54:55"/>
</a>
</root>
$ python3 alter_time.py file.xml > new.file.xml
$ cat new.file.xml
<root>
<a>
<b time="8-05">
<c>text contains time 08:05:00</c>
</b>
<d foo="bar" time="19-54" />
</a>
</root>
错误处理作为练习留下