我有以下字符串:blabla a13724bla-bla244 35%
请注意,百分比前总是有空格。我想使用Linux shell从这些字符串中提取百分比数(因此,没有%
)。
答案 0 :(得分:4)
假设你有GNU grep:
$ grep -oP '\d+(?=%)' <<< "blabla a13724bla-bla244 35%"
35
答案 1 :(得分:3)
使用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'
答案 2 :(得分:0)
您可以尝试使用此正则表达式:
/\s(\d+%)/
答案 3 :(得分:0)
使用此正则表达式:
\s(\d{1,3})%
如果你需要它在shell中,你可以使用sed或perl one-liner:
echo "blah 35%" | perl -pe "s/.*\s(\d{1,3})%/\1/g"
35
答案 4 :(得分:0)
你可以试试这个
echo "blabla a13724bla-bla244 35%" | cut -d' ' -f3 | sed 's/\%//g'
注意:假设输入始终采用此格式,百分比是以空格分隔的第3个标记。
答案 5 :(得分:0)
如果你总是有许多连续的列,你应该尝试使用awk而不是常规的表达。
cat file.txt |awk '{print $3}' |cut -d "%" -f 1
使用此代码,您将获得第三列。