shell - 如何匹配 xml 标签之间的内容?
shell - How to match content between xml tags?
我有这个文件:
<?xml version="1.0" encoding="utf-8"?>
<response>
<Count>1</Count>
<Messages>
<Message>
<Smstat>0</Smstat>
<Index>40001</Index>
<Phone>234</Phone>
<Content>Poin Bonstri kamu: 358
Sisa Kuota kamu :
Kuota WA.Line 18 MB s.d 06/08/2019 19:33:46
Kuota Reguler 1478 MB s.d 02/08/2019 05:36:44
Temukan beragam paket lain di bima+ https://goo.gl/RQ1DBA</Content>
<Date>2019-08-01 13:28:04</Date>
<Sca></Sca>
<SaveType>4</SaveType>
<Priority>0</Priority>
<SmsType>2</SmsType>
</Message>
</Messages>
</response>
我想匹配 <Content>
和 </Content>
之间的文本。我试过:
tr '\n' ' ' < input_file | grep -E "^<Content>.*</Content>$"
但是没有用。请注意,我使用 ash
shell 而不是 bash
。我该怎么做?
如果你有 PCRE 能力 grep
你可以使用积极的前瞻和 -behind:
$ tr '\n' ' ' < file | grep -Po "(?<=<Content>).*(?=</Content>)"
输出:
Poin Bonstri kamu: 358 Sisa Kuota kamu : Kuota WA.Line 18 MB s.d 06/08/2019 19:33:46 Kuota Reguler 1478 MB s.d 02/08/2019 05:36:44 Temukan beragam paket lain di bima+ https://goo.gl/RQ1DBA
我有这个文件:
<?xml version="1.0" encoding="utf-8"?>
<response>
<Count>1</Count>
<Messages>
<Message>
<Smstat>0</Smstat>
<Index>40001</Index>
<Phone>234</Phone>
<Content>Poin Bonstri kamu: 358
Sisa Kuota kamu :
Kuota WA.Line 18 MB s.d 06/08/2019 19:33:46
Kuota Reguler 1478 MB s.d 02/08/2019 05:36:44
Temukan beragam paket lain di bima+ https://goo.gl/RQ1DBA</Content>
<Date>2019-08-01 13:28:04</Date>
<Sca></Sca>
<SaveType>4</SaveType>
<Priority>0</Priority>
<SmsType>2</SmsType>
</Message>
</Messages>
</response>
我想匹配 <Content>
和 </Content>
之间的文本。我试过:
tr '\n' ' ' < input_file | grep -E "^<Content>.*</Content>$"
但是没有用。请注意,我使用 ash
shell 而不是 bash
。我该怎么做?
如果你有 PCRE 能力 grep
你可以使用积极的前瞻和 -behind:
$ tr '\n' ' ' < file | grep -Po "(?<=<Content>).*(?=</Content>)"
输出:
Poin Bonstri kamu: 358 Sisa Kuota kamu : Kuota WA.Line 18 MB s.d 06/08/2019 19:33:46 Kuota Reguler 1478 MB s.d 02/08/2019 05:36:44 Temukan beragam paket lain di bima+ https://goo.gl/RQ1DBA