我有一些xml文件,在将它解析为Python中的csv文件(内存问题)之前,我想做一些预处理。
说我想从像
这样的xml文件中查找标题包含“abcd”的内容<Title> Project abcd </Title> <Id> xxxx</Id> <Group>xxxx</Group>... <Title> Project abcd </Title>
由于重复的标题字段,如果我这样做
grep -Ei "<Title>.*abcd.* </Title>"
如果“abcd”巧合地包含在Id或其他不相关的字段中,它将返回该行。
有没有办法可以使用grep返回只有Title字段包含我想要找到的模式的行?
答案 0 :(得分:0)
你应该知道风险,用正则表达式解析html / xml。如果你必须这样做, 尝试
'<Title>[^<]*abcd[^<]*</Title>'
答案 1 :(得分:0)
使用xml / html解析器是操作xml / html数据的正确方法:
xmlstarlet 解决方案:
xmlstarlet sel -t -c "//Title[contains(text(),"abcd")]" -n your.xml
输出(用于当前输入):
<Title> Project abcd </Title><Title> Project abcd </Title>