从没有空格的字符串中获取数字

时间:2011-11-24 19:12:57

标签: bash sed awk grep

我从SVG文件grep这个字符串:

<g transform="translate(0.000000,980.000000) scale(0.100000,-0.100000)"

我希望在bash脚本变量中获得数字980。我的问题是我没有设法管道正确的表达式只从字符串中获取该数字980。我需要补充一点,当然,数字980可以是任意长度的任意数字(例如,596798 ...)。

你能给我一个解决方案吗?我被困在那里......

5 个答案:

答案 0 :(得分:4)

假设您的SVG输入文件为input.svg。你应该试试:

cat input.svg | grep translate | sed 's/^.*translate(.*,\(.*\)\..*) scale.*$/\1/'

答案 1 :(得分:0)

根据我的理解,你可以使用awk。

grep whatever | awk -F"," '{print $2}' | awk -F"." '{print $1}'  

答案 2 :(得分:0)

不需要多个简单的命令:

awk -F"[,.]" '/your_search_string/{print $3}'

HTH Chris

答案 3 :(得分:0)

只是bash,我假设您希望第二个参数为“translate()”

$ line='<g transform="translate(0.000000,980.000000) scale(0.100000,-0.100000)"'
$ num=${line#*translate*,}; echo $num
980.000000) scale(0.100000,-0.100000)"
$ num=${num%%.*}; echo $num
980

答案 4 :(得分:0)

这可能对您有用:

 sed '/^<g transform/!d;s/[^,]*,//;s/[^0-9].*//