我应该使用什么命令来删除所有标签以仅显示我想要显示的内容。有数百个条目,只想显示 --name-- 标签。以下是单个条目的示例。
原创路线
<game id="149526">
<path>./1943mii.zip</path>
<name>1943: The Battle of Midway Mark II</name>
<desc>1943: The Battle of Midway Mark II is an unofficial US version of the 1943 kai.</desc>
<image>./images/1943mii-image.png</image>
<video>./videos/1943mii-video.mp4</video>
<marquee>./images/1943mii-marquee.png</marquee>
<thumbnail>./images/1943mii-thumb.png</thumbnail>
<rating>0.5</rating>
<releasedate>19870101T000000</releasedate>
<developer>Capcom</developer>
<publisher>Capcom</publisher>
<genre>Shoot'em up / Vertical</genre>
<arcadesystemname>capcom</arcadesystemname>
<players>1-2</players>
<md5>5152b779738392fe2d6471b8c11a8b10</md5>
<lang>en</lang>
<region>us</region>
</game>
需要线路
1943: The Battle of Midway Mark II
答案1
- Ctrl+H
- 找什么:
<game.+?<name>(.+?)</name>.+?</game>
- 用。。。来代替:
$1
- 查看 相符
- 查看 环绕
- 查看 正则表达式
- 查看
. matches newline
- Replace all
解释:
<game # open tag
.+? # 1 or more any character, not greedy
<name> # tag
(.+?) # group 1, 1 or more any character, not greedy
</name> # close tag
.+? # 1 or more any character, not greedy
</game> # close tag
替代品:
$1 # content of group 1 (i.e. the name)
截图(之前):
截图(之后):
答案2
在大多数情况下,XML 感知实用程序(例如)xmlstarlet
是首选grep
。无法保证游戏元素会位于其自己的行上。
$ xmlstarlet sel -t -v "/game/name" -n file.xml
1943: The Battle of Midway Mark II
$