LINUX.ORG.RU

sed и ^


0

1

Объясните, пожалуйста, почему следующий скрипт не работает, как надо:

#!/bin/bash
line=" 3.2. Текст"
pattern="^(([0-9]*+\.)*)"
line=`echo "$line"|sed -r "s/$pattern/OK/g"`
echo "$line"
OK 3.2. Текст

Требуется что-нибудь сделать с «3.2.» (или 3.2.1, 3.2.1.1 и т.д.), например, заменить на «OK», но только если «3.2.» идет первым в строке.

Deleted

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

А он первым и не идёт

line=" 3.2. Текст"
______^

вот так вот будет работать:

pattern="^[ \t]*(([0-9]*+\.)*)"

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

А он первым и не идёт

Я забыл исправить образец. Спасибо за вариант, но мне нужно сделать наоборот. «3.2. Текст» должно работать, а вот " 3.2. Текст" - нет.

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

Одна или больше групп из минимум одна цифра полюс точка.

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

man sed, двоешник

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

Не надо. Заодно можно избавиться и от экранирования, если -r в sed добавить. Перед «+» «\» не нужно, ведет к неверному результату.

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