用于提取百分比的正则表达式



我有如下字符串:blabla a13724bla-bla244 35%

请注意百分比前总是有一个空格。我想使用Linux shell从这些字符串中提取百分比数字(因此,没有%)。

假设您有GNU grep:

$ grep -oP 'd+(?=%)' <<< "blabla a13724bla-bla244 35%"
35

使用sed:

echo blabla a13724bla-bla244 35% | sed 's/.*[ t][ t]*([0-9][0-9]*)%.*/1/'

如果你希望在一行中有多个百分比,那么:

echo blabla 20% a13724bla-bla244 35% | 
   sed -e 's/[^%0-9 ]*//g;s/  */n/g' | sed -n '/%/p'

你可以试试这个

echo "blabla a13724bla-bla244 35%" | cut -d' ' -f3 | sed 's/%//g'

注意:假设输入总是这种格式,百分比是用空格分隔的第三个标记。

你可以试试这个正则表达式:

/s(d+%)/

使用正则表达式:

s(d{1,3})%

如果您需要在shell中使用它,您可以使用sed或下面的perl一行代码:

echo "blah 35%" | perl -pe "s/.*s(d{1,3})%/1/g"
35

如果你总是有一些连续的列,也许你应该尝试使用awk而不是正则表达式。

cat file.txt |awk '{print $3}'  |cut -d "%" -f 1

使用此代码,您将获得第三列。

最新更新