【发布时间】:2015-10-14 19:36:45
【问题描述】:
我正在使用 TextWrangler 从 XML 中获取特定信息。我需要找到存在的文件名列表并仅打印出这些文件名。
代码示例如下:
<file id="file_1045280">
<name>SKY_A026C032_150707_R4RO.mov</name>
<pathurl>file://localhost/M:/FPL_MEDIA/04_MEZZANINE/SKY/SKY-EP03/SKY-0312_20150707_AA_A026/SKY_A026C032_150707_R4RO.mov</pathurl>
<duration>1796</duration>
<timecode>
<rate>
<ntsc>false</ntsc>
<timebase>25</timebase>
</rate>
<frame>0</frame>
<displayformat>NDF</displayformat>
</timecode>
<media>
<video>
<duration>1796</duration>
<samplecharacteristics>
<width>1920</width>
<height>1080</height>
</samplecharacteristics>
</video>
</media>
</file>
<sourcetrack>
<mediatype>video</mediatype>
</sourcetrack>
<link>
<linkclipref>clipItem_1045280</linkclipref>
<mediatype>video</mediatype>
<trackindex>1</trackindex>
</link>
</clipitem>
<enabled>TRUE</enabled>
<locked>FALSE</locked>
</track>
</video>
</media>
</clip>
<clip id="clip_1045282">
<name>SKY_A026C018_150707_R4RO</name>
<duration>958</duration>
<rate>
<ntsc>false</ntsc>
<timebase>25</timebase>
</rate>
<in>-1</in>
<out>-1</out>
<masterclipid>clip_1045282</masterclipid>
<ismasterclip>TRUE</ismasterclip>
<media>
<video>
<track>
<clipitem id="clipitem_1045282">
<name>SKY_A026C018_150707_R4RO</name>
<duration>958</duration>
<masterclipid>clip_1045282</masterclipid>
<rate>
<ntsc>false</ntsc>
<timebase>25</timebase>
</rate>
<in>0</in>
<out>958</out>
<start>0</start>
<end>958</end>
<file id="file_1045282">
<name>SKY_A026C018_150707_R4RO.mov</name>
<pathurl>file://localhost/M:/FPL_MEDIA/04_MEZZANINE/SKY/SKY-EP03/SKY-0312_20150707_AA_A026/SKY_A026C018_150707_R4RO.mov</pathurl>
<duration>958</duration>
<timecode>
<rate>
<ntsc>false</ntsc>
<timebase>25</timebase>
</rate>
<frame>0</frame>
<displayformat>NDF</displayformat>
</timecode>
<media>
<video>
<duration>958</duration>
<samplecharacteristics>
<width>1920</width>
<height>1080</height>
</samplecharacteristics>
</video>
</media>
</file>
<sourcetrack>
<mediatype>video</mediatype>
</sourcetrack>
<link>
<linkclipref>clipItem_1045282</linkclipref>
<mediatype>video</mediatype>
<trackindex>1</trackindex>
</link>
</clipitem>
<enabled>TRUE</enabled>
<locked>FALSE</locked>
</track>
</video>
</media>
</clip>
<clip id="clip_1045283">
<name>SKY_A026C033_150707_R4RO</name>
<duration>1202</duration>
<rate>
<ntsc>false</ntsc>
<timebase>25</timebase>
</rate>
<in>-1</in>
<out>-1</out>
<masterclipid>clip_1045283</masterclipid>
<ismasterclip>TRUE</ismasterclip>
<media>
<video>
<track>
<clipitem id="clipitem_1045283">
<name>SKY_A026C033_150707_R4RO</name>
<duration>1202</duration>
<masterclipid>clip_1045283</masterclipid>
<rate>
<ntsc>false</ntsc>
<timebase>25</timebase>
</rate>
<in>0</in>
<out>1202</out>
<start>0</start>
<end>1202</end>
目前,我正在使用以下 Grep:
.*?(\<name\>)(.*)(.mov).*
这可以找到我需要的字符串。但是,我需要用任何内容替换所有剩余的文本,即留下一个文件名列表。
谁能告诉我如何解决这个问题?
提前致谢, 马特
【问题讨论】:
-
你需要输出只有
<name>SKY_A026C032_150707_R4RO.mov</name><name>SKY_A026C018_150707_R4RO.mov</name>吗? -
在理想的解决方案中,我希望输出仅为 SKY_A026C032_150707_R4RO.mov,减去
和 标签,但您的解决方案就足够了,因为我可以运行第二个 Grep . -
你安装了 perl 吗?
-
很遗憾没有。它需要在 TextWrangler 中完成,因为它需要在锁定的 XSAN 环境中运行,而这是我们 SOE 上唯一可用的软件。
-
很抱歉,grep 误导了我,我无法进一步帮助您。
标签: regex grep textwrangler