使用sed命令提取模式

时间:2011-11-21 07:59:54

标签: sed

我有一个像这样的字符串

 "112344 1234234 guest 25 % allocation used"

我想使用sed从这个字符串中提取25

在给定的行“112344 1234234客人25%分配使用”中,我只对“25%”感兴趣。第一个字段也可以是空的,如下所示:

“使用了25%的分配”

但“使用的%分配”是固定字符串。 因此正则表达式应该基于这种固定模式。

任何人都可以帮助我。

3 个答案:

答案 0 :(得分:2)

基本上,你想要的是右边第四个字段。为此,我使用awk

awk '{ print $(NF-3) }'

如果绝对必须在sed,请尝试:

sed -e 's/^/ /' -e 's/\(^|.* \)\(.*\) % allocation used/\1/'

答案 1 :(得分:1)

如果您确定'%'前面的数字是2位数,那么您可以使用以下

[jaypal~/Temp]$ cat text5
112344 1234234 guest 25 % allocation used
25 % allocation used
2344 guest 15 % allocation used

[jaypal~/Temp]$ sed 's/.*\(.. %\).*/\1/' text5
25 %
25 %
15 %

答案 2 :(得分:0)

试试这个

 cut -d% -f1 | awk '{ print $(NF) }'