2014-10-24 2 views
1

Я пытаюсь изменить файл с использованием СЭД в Баш скриптСохраняя только значения, которые соответствуют регулярному выражению в файле

Файл имеет формат, как:


asfdsdfad..... : 4.12 

aldkfjsadk.... : 3.90 

asdlkfjasd.... : 2.33 

Я хочу для изменения файла, чтобы содержать только числа, в том числе десятичные.

Регулярное выражение того, что я хочу, чтобы было бы просто [0-9].[0-9][0-9]

В настоящее время я пытался использовать sed s/[regex]//g Однако, у меня возникли проблемы с поиском правильного регулярное выражение, которое является инверсией. Поэтому либо мне нужно найти правильное регулярное выражение как обратное к указанному выше выражению, либо иметь команду сохранить регулярное выражение, а не удалять его.

Заранее спасибо

ответ

2

Вы можете попробовать следующее регулярное выражение, это будет удалить все вплоть до числа.

sed 's/^[^0-9]\+//' file 
+0

Этот продукт работает лучше всего в моем случае, кажется, спасибо – user2243085

1

Альтернативы ...

cut -d " " -f 3 file.txt 

ИЛИ

awk -F " " '{print $3}' file.txt 
1
sed 's/.*\([0-9]\{1,\}\.\{0,1\}[0-9]*\) *$/\1/' YourFile 

Хранить только цифры, за которым следует eventualy 1 точку и eventuellay цифрами в конце строки (также удалите место на конце, если оно есть)

1

Это может сделать:

awk '{$0=$3}NF' file 
4.12 
3.90 
2.33 

Он будет также удалить пустые строки.

Смежные вопросы