2016-01-04 2 views
0

Я хочу Grep XML-файл, который содержит:TCL: Grep XML файл

<name> 
name1 
</name> 
<value> 
val1 
</value> 
<name> 
name2 
</name> 
<value> 
val2 
</value> 
<name> 
name3 
</name> 
<value> 
val3 
</value> 
<name> 
name4 
</name> 
<value> 
val4 
</value> 
<name> 
nameX 
</name> 
<value> 
valX 
</value> 

Я хочу, чтобы извлечь из файла только имя beteewn <name> и </name> теги

желаемого результата:

name1 
name2 
name3 
name4 
nameX 

Выполняю следующую команду

exec grep -e "\\<name\\>.*\\<\\/name\\>$" file 

, но я получил child process exited abnormally

+1

Возможно ли использовать 'tdom'? Это значительно упростит извлечение данных из xml. –

ответ

1

С GNU Grep без ускользающей для Tcl:

grep -Poz '<name>\n\K.*(?=\n</name>)' file 

Выход:

 
name1 
name2 
name3 
name4 
nameX 
+1

Ускорение для Tcl даст: 'exec grep -Poz { \ n \ K. * (? = \ N)} file' и даст тот же результат. –

+0

@DonalFellows: Спасибо. – Cyrus