如何使用grep命令打印一行变量的值?

时间:2014-12-16 12:30:15

标签: bash shell unix sh scripting-language

例如,请考虑以下行

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

从上面一行,我需要使用grep命令或使用任何命令从FROMTASK ="Start"打印开始

3 个答案:

答案 0 :(得分: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 :(得分:0)

如果您只想要FROMTASK的值,或某些固定变量,请尝试sed

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

如果您想获取任何变量的值,请尝试xmllint作为sputnick已解答

使用sudo apt-get install libxml2-utils(对于debian)或yum install libxml2-utils进行安装。

答案 2 :(得分:0)

由于您的代码不建议这是关于XML的,因此只需使用剪切命令

即可
cut -d "\"" -f4