Bash在指定字符之前获取n个字符

时间:2014-05-22 11:56:37

标签: string bash

这是字符串:

Volume: 0:  120% 1:  128%

我希望在"%"之前获得3个字符。字符。因此,对于此示例,输出必须类似于120 128。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

假设你实际上想要空格和%之间的所有内容(这个例子都是一样的),你可以这样做:

awk '{print $NF}' RS=% ORS=' '

答案 1 :(得分:2)

您可以使用此grep

$ grep -Po '...(?=%)' file
120
128

与以下内容相同:

grep -Po '.{3}(?=%)' file

或者如果你想确保你得到数字:

grep -Po '[0-9]{3}(?=%)' file

解释

底层的想法是在找到%之前打印三个字符。 (?=%)表示此情况,称为"预见"。

使用-Po我们指示grep它可以使用Perl正则表达式(-P)并只打印匹配项(-o)。