2014-10-09 4 views
0

Я создаю простой Баш скрипт и у меня есть эта проблема: У меня есть переменная с XML в качестве результата от завитка вызоваBash извлекать данные из XML

CURL_RESPONSE="...</param-value></params></operation><error code="ERR-M001"><msg>errore prova</msg></error></operation-result>.." 

Мне нужно извлечь значение кода ошибки, в этом случае ERR-M001, и поместите его в другую переменную. Как я могу это сделать с помощью sed или awk?

Спасибо заранее!

ответ

1

Вы также можете использовать этот патч в команду

var=`sed -r 's/.*error code=.([^"]+).*/\1/g' file_name ` 

Другой способ:

var=`cut -d'"' -f3 filename` 
2

Вы можете попробовать команду ниже Grep,

var=$(command | grep -oP 'error *code="\K[^"]*(?=")') 
0

Вы можете попробовать ниже

$ echo $CURL_RESPONSE 
<params><param-value>123</param-value></params></operation><error code="ERR-M001"><msg>errore prova</msg></error> 
$ var=`echo $CURL_RESPONSE | sed 's/\(.*<error code="\)\(.*\)\(\">.*\)/\2/g'` 
$ echo $var 
ERR-M001 
+0

Нет необходимости в подшивке 1 и 3. Этот шаблон вам требуется, чтобы его образец был достаточно. Это также дает тот же результат 'sed 's /.* <код ошибки =" \ (. * \) \ ">. */\ 1/g'' – Kalanidhi

Смежные вопросы