Извлечь имена файлов (без расширения) из XML-файла - PullRequest
0 голосов
/ 18 августа 2010

У меня есть следующий вывод XML, когда я grep для "Сервер":

<Server id="1" src="/other/Server/PRX01/PRX01.xml"/>
<Server id="2" src="/other/Server/PRX01/PRX02.xml"/>
<Server id="3" src="/other/Server/PRX01/PRX03.xml"/>
<Server id="4" src="/other/Server/PRX01/PRX04.xml"/>

Мне нужно иметь возможность взять этот вывод и sed / awk или какой-либо другой инструмент, и просто получить имя файла,без пути или расширения.Поэтому мой вывод должен быть (для этого примера):

PRX01
PRX02
PRX03
PRX04

Ответы [ 4 ]

2 голосов
/ 18 августа 2010

Для входных данных примера будет работать следующий скрипт sed:

sed -e 's/.*\/\(.*\)\.xml.*/\1/g' t.tmp

.*\/ соответствует слешу (жадный). Затем \(.*\)\.xml соответствует последней строке и получает базовое имя файла в группе. \1 говорит ему заменить все то, что было в группе.

1 голос
/ 18 августа 2010

просто сделать с помощью awk и sed, при условии, что данные находятся в файле "test.data":

cat test.data | awk 'BEGIN{FS="/"}{print $5}'  | sed 's/\..*//g'
0 голосов
/ 19 августа 2010
>gawk -F"/" "{ split($5,a,\".\"); print a[1]}" 1.t
PRX01
PRX02
PRX03
PRX04
0 голосов
/ 19 августа 2010

принятый ответ можно упростить без лишних кошек и седов,

awk '{gsub(/\..*/,"",$5) ;print $5}' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...