Я использую TextWrangler для получения конкретной информации из XML. Мне нужно найти список имен файлов, которые присутствуют, и распечатать только те имена файлов.Использование GREP для замены всех, но совпадающих строк
Пример кода ниже:
<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).*
Это удается найти строки, которые мне нужны. Однако мне нужно заменить весь оставшийся текст ничем, поэтому у меня останется список имен файлов.
Может ли кто-нибудь посоветовать, как я могу это сделать?
Заранее спасибо, Matt
ли вам нужен выход, чтобы быть только ' SKY_A026C032_150707_R4RO.mov SKY_A026C018_150707_R4RO.mov '? –
В идеальном решении я хотел бы, чтобы результат был только SKY_A026C032_150707_R4RO.mov, минус теги и , но вашего решения было бы достаточно, поскольку я мог бы просто запустить второй Grep. –
matttickner
У вас установлен perl? –