我有如下字符串: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
使用此代码,您将获得第三列。