【问题标题】:How to use grep command to print value of a variable in a line?如何使用 grep 命令在一行中打印变量的值?
【发布时间】:2014-12-16 12:30:15
【问题描述】:
例如,考虑下面一行
<WORKFLOWLINK CONDITION ="" FROMTASK ="Start" TOTASK ="cmd_START_RUN"/>
从上面的行开始,我需要使用 grep 命令或任何命令从 FROMTASK ="Start" 打印 Start。
【问题讨论】:
-
如果这是关于“解析” XML,那么答案是使用 xml 解析工具。像 perl、python、ruby 等或者使用像 xsltproc 或 XMLStarlet 这样的工具。
-
标签:
bash
shell
unix
sh
scripting-language
【解决方案1】:
尝试这样做:
$ xmllint --xpath 'string(//WORKFLOWLINK/@FROMTASK)' file
Start
$ xmlstarlet sel -t -v 'string(//WORKFLOWLINK/@FROMTASK)' file
Start
$ saxon-lint --xpath 'string(//WORKFLOWLINK/@FROMTASK)' file
Start
【解决方案2】:
如果您只想要FROMTASK 的值,或者一些固定变量,请尝试sed:
sed -nre 's/^.*FROMTASK *= *"([^"]*)".*$/\1/p' file
如果您想获取任何变量的值,请尝试xmllint as sputnick 回答
使用sudo apt-get install libxml2-utils(debian) 或yum install libxml2-utils 安装。
【解决方案3】:
由于您的标签不建议这是关于 XML,只需使用 cut 命令
cut -d "\"" -f4