2014-12-16 5 views
0

Для примера рассмотрим следующую строкуКак использовать команду grep для печати значения переменной в строке?

<WORKFLOWLINK CONDITION ="" FROMTASK ="Start" TOTASK ="cmd_START_RUN"/> 

Из выше линии, мне нужно распечатать Start из FROMTASK ="Start" с помощью команды Grep или используя любую команду.

+1

Если речь идет о «разборе» XML, то ответ заключается в использовании инструмент XML разбора. Как perl, python, ruby ​​и т. Д. Или использовать такой инструмент, как xsltproc или [XMLStarlet] (http://xmlstar.sourceforge.net/). –

+0

ksh: xmllint: не найден. ошибка – pyennamp

ответ

3

Попробуйте сделать это:

$ xmllint --xpath 'string(//WORKFLOWLINK/@FROMTASK)' file 
Start 

$ xmlstarlet sel -t -v 'string(//WORKFLOWLINK/@FROMTASK)' file 
Start 

$ saxon-lint --xpath 'string(//WORKFLOWLINK/@FROMTASK)' file 
Start 
+1

Для использования нужного инструмента +1 – whoan

+0

ksh: xmllint: не найден. – pyennamp

+0

Возможно, вам нужно установить его или использовать другой инструмент? –

0

Если вы просто хотите значение FROMTASK, или некоторые фиксированные переменные пытаются sed:

sed -nre 's/^.*FROMTASK *= *"([^"]*)".*$/\1/p' file 

Если вы хотите, чтобы получить значение каких-либо переменных, попробуйте xmllint, как sputnick ответил

Использование sudo apt-get install libxml2-utils (для Debian) или yum install libxml2-utils, чтобы установить его.

0

Поскольку ваши теги не предполагают, что это о XML, просто используйте команду Вырезать

cut -d "\"" -f4