LINUX.ORG.RU

получить число из строчки

 , , , ,


0

1

Помогите пожалуйста! Есть файл

В нем строка с меняющимися цифрами и Altis тоже меняется

		briefingName="glowing-octo-shame v0.0.0.145 Altis";
надо как-то получить из нее 0.0.0.145 а точнее без точек например 0-0-0-145

Deleted

Последнее исправление: Deleted (всего исправлений: 1)

Что-то вроде:

echo 'briefingName="glowing-octo-shame v0.0.0.145 Altis";'| sed -e 's/.*glowing-octo-shame v\(.*\) Altis.*/\1/'
Из файла можешь достать grep.

anonymous
()

На точки можешь заменить так:

echo 'briefingName="glowing-octo-shame v0.0.0.145 Altis";'| sed -e 's/.*glowing-octo-shame v\(.*\) Altis.*/\1/' -e 's/\./\-/gi'
Ну а из файла так:
grep briefingName file.txt | sed -e 's/.*glowing-octo-shame v\(.*\) Altis.*/\1/' -e 's/\./\-/gi'
В переменную что-то вроде
value=`grep briefingName file.txt | sed -e 's/.*glowing-octo-shame v\(.*\) Altis.*/\1/' -e 's/\./\-/gi'`
echo $value

anonymous
()
Ответ на: комментарий от Deleted

все с разобрался Altis

sed -e 's/.*glowing-octo-shame v\(.*\) .*/\1/'

Deleted
()
Ответ на: комментарий от Deleted

Что-то вроде:

sed -e 's/.*glowing-octo-shame v\(.*\) .*/\1/' -e 's/\./\-/gi'

Если заместо «Altis» может быть что-то вроде «A B C», то нужно писать что-то такое:

sed -e 's/.*glowing-octo-shame v\(\d*\.\d*\.\d*\) .*/\1/' -e 's/\./\-/gi'

anonymous
()

Само собой точность regexp зависит от внешних условий.

$ perl -nle '/^\s+briefingName="glowing-octo-shame v.+ Altis";/ && print(join "-" => /(\d+)/g)' /tmp/filename 
0-0-0-145
anonymous
()

я б вот так сделал:

echo "$briefingName" | tr -d [:alpha:][:blank:] | td . - 

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.