Получить число из строки без пробелов - PullRequest
0 голосов
/ 24 ноября 2011

Я извлекаю эту строку из файла SVG:

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

и хочу получить число 980 в переменной сценария bash.Моя проблема в том, что мне не удается передать правильное выражение, чтобы получить только это число 980 из строки.Мне нужно добавить, что, конечно, число 980 может быть любым числом любой длины (например, 5967 или 98 ...).

Не могли бы вы предложить мне решение?Я застрял там ...

Ответы [ 6 ]

4 голосов
/ 24 ноября 2011

Предполагается, что ваш входной файл SVG input.svg. Вам следует попробовать:

cat input.svg | grep translate | sed 's/^.*translate(.*,\(.*\)\..*) scale.*$/\1/'
0 голосов
/ 30 ноября 2011

Следующая команда awk должна работать для вас.

awk -v FS="[ =(,)]" '{print $5}' "Yourfilename" | awk -v FS="[.]" '{print $1}'
0 голосов
/ 25 ноября 2011

Это может работать для вас:

 sed '/^<g transform/!d;s/[^,]*,//;s/[^0-9].*//
0 голосов
/ 25 ноября 2011

просто bash, я полагаю, вы хотите, чтобы 2-й параметр "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
0 голосов
/ 25 ноября 2011

Нет необходимости использовать более одной простой команды:

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

HTH Крис

0 голосов
/ 24 ноября 2011

Насколько я понимаю, вы можете использовать awk.

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