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

String Bash在指定字符之前获取n个字符,string,bash,String,Bash,这是字符串: Volume: 0: 120% 1: 128% 我想在“%”字符前加3个字符。因此,对于本例,输出必须类似于120128。我怎样才能做到这一点呢?假设您实际需要空格和a%之间的所有内容(本例中也是如此),您可以: awk '{print $NF}' RS=% ORS=' ' 您可以使用此grep: $ grep -Po '...(?=%)' file 120 128 这与: grep -Po '.{3}(?=%)' file 或者,如果要确保获得数字,请执行以下操作:

这是字符串:

Volume: 0:  120% 1:  128%

我想在“%”字符前加3个字符。因此,对于本例,输出必须类似于
120128
。我怎样才能做到这一点呢?

假设您实际需要空格和a%之间的所有内容(本例中也是如此),您可以:

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

您可以使用此
grep

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

grep -Po '.{3}(?=%)' file
或者,如果要确保获得数字,请执行以下操作:

grep -Po '[0-9]{3}(?=%)' file
解释 基本思想是在找到
%
之前打印三个字符<代码>(?=%)表示这一点,称为“前瞻”

-Po
中,我们指出grep可以使用Perl正则表达式(
-p
),只打印匹配项(
-o