如何使用sed获取所需的输出?

时间:2016-04-28 06:13:34

标签: string bash unix sed

这是我的字符串:

<InstalledVersion Name="xyz" version="5" identifier="6.3.0.00.267" supportData="A002-IBY03" supportRelease="6.3" versionCode="xyz/abc/267"></InstalledVersion>

我想要输出的是203. A002的最后一个字符和IBY03的最后两个字符。因此输出为203 我正在使用sed 's/.*supportData="A\([0-9]\+[-][A-Z]\+[0-9]\+\)".*/\1/' | cut -c3,8,9'.
这给了我正确的输出,但我想知道我是否可以通过sed直接做到这一点 任何帮助,将不胜感激。 感谢

3 个答案:

答案 0 :(得分:4)

您可以使用此sed命令:

<a/>

<强>输出:

s='<InstalledVersion Name="xyz" version="5" identifier="6.3.0.00.267" supportData="A002-IBY03" supportRelease="6.3" versionCode="xyz/abc/267">'

sed -E 's/.*supportData="[^"]*([0-9])-[^"]*([0-9]{2})".*/\1\2/' <<< "$s"

答案 1 :(得分:0)

试试这个:

$ var='supportData="A002-IBY03"'
$ sed -r 's/.*([0-9])-.*([0-9][0-9])"/\1\2/' <<<$var
203

答案 2 :(得分:0)

您可以使用以下内容:

$ echo '<InstalledVersion Name="xyz" version="5" identifier="6.3.0.00.101" supportData="A002-IBY03" supportRelease="6.3" versionCode="xyz/abc/267">' | sed -r 's/^.*supportData=".{3}([0-9])-.{3}([0-9]{2}).*$/\1\2/'
203
$