Страница 1 из 1

sed - обработка табулятора

Добавлено: 2016-05-10 13:34:53
icb
Имею файл с такой строкой path<tab>= /
Пытаюсь распарсить этот файл командой

Код: Выделить всё

sed -n 's/^path[ \t]*=[\s]*//p' my.conf
Но ничего не возвращается :(
Если сделаю вместо табулятора пробел, то работает конструкция

Код: Выделить всё

sed -n 's/^path.*=[\s]*//p' my.conf
Но если делаю

Код: Выделить всё

sed -n 's/^path[.]*=[\s]*//p' my.conf
не работает :(

Почему в одном месте срабатывает [], а в другом нет?
Почему не срабатывает \t?

sed - обработка табулятора

Добавлено: 2016-05-11 7:06:00
Alex Keda
Х.з.
Последний раз такое делал - пришлось именно TAB вписывать в скрипт.
Подобрать регулярку не смог

sed - обработка табулятора

Добавлено: 2016-05-11 8:44:59
icb
Похоже дело не просто в табуляторе. Заменяю табулятор на пробел и получаю глюк.
Работает только если указать просто .
Но если точку взять в скобки - не работает. Причем такая же конструкция после = работает.

sed - обработка табулятора

Добавлено: 2016-05-11 13:10:58
xM
Мне вот эта штука иногда помогает в написании regexp.
TAB, вроде, там поддерживается в образце обрабатываемой строки.

sed - обработка табулятора

Добавлено: 2016-05-11 13:35:31
icb
Ввожу свою регулярку и тестовые данные - замечательно отрабатывает.
Т.е. сама по себе регулярка нормальная.

sed - обработка табулятора

Добавлено: 2016-05-11 13:48:16
xM
Значит дело в файле самом. Возможно у вас там местами вместо TAB пробелы.

sed - обработка табулятора

Добавлено: 2016-05-11 14:31:45
icb
Думал об этом и проверял и даже заменил табулятор на пробел - не помогает.
Как только пробел помещаю в [] правило перестает работать.

Отправлено спустя 5 минут 10 секунд:
А не, дело не в этом. В [] не срабатывают спец.конструкции типа . \s \t
Только пока не очень понятно почему.

sed - обработка табулятора

Добавлено: 2016-05-11 18:07:42
FiL
a какой sed? A то у меня всё работает :)

Код: Выделить всё

$ sed --version
GNU sed version 4.2.1

sed - обработка табулятора

Добавлено: 2016-05-11 18:38:39
icb
По идее не должно работать, т.к. в sed используются POSIX регулярки - а там другой синтаксис.
Поменял синтаксис и все заработало.

sed - обработка табулятора

Добавлено: 2016-05-11 18:42:13
FiL
Я тоже думал, что не должно. Но сначала решил проверить.