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

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
icb
лейтенант
Сообщения: 719
Зарегистрирован: 2008-07-15 16:11:11

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

Непрочитанное сообщение icb » 2016-05-10 13:34:53

Имею файл с такой строкой 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?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 34924
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2016-05-11 7:06:00

Х.з.
Последний раз такое делал - пришлось именно TAB вписывать в скрипт.
Подобрать регулярку не смог
Убей их всех! Бог потом рассортирует...

icb
лейтенант
Сообщения: 719
Зарегистрирован: 2008-07-15 16:11:11

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

Непрочитанное сообщение icb » 2016-05-11 8:44:59

Похоже дело не просто в табуляторе. Заменяю табулятор на пробел и получаю глюк.
Работает только если указать просто .
Но если точку взять в скобки - не работает. Причем такая же конструкция после = работает.

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1184
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

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

Непрочитанное сообщение xM » 2016-05-11 13:10:58

Мне вот эта штука иногда помогает в написании regexp.
TAB, вроде, там поддерживается в образце обрабатываемой строки.
IT voodoo blog https://kostikov.co

icb
лейтенант
Сообщения: 719
Зарегистрирован: 2008-07-15 16:11:11

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

Непрочитанное сообщение icb » 2016-05-11 13:35:31

Ввожу свою регулярку и тестовые данные - замечательно отрабатывает.
Т.е. сама по себе регулярка нормальная.

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1184
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

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

Непрочитанное сообщение xM » 2016-05-11 13:48:16

Значит дело в файле самом. Возможно у вас там местами вместо TAB пробелы.
IT voodoo blog https://kostikov.co

icb
лейтенант
Сообщения: 719
Зарегистрирован: 2008-07-15 16:11:11

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

Непрочитанное сообщение icb » 2016-05-11 14:31:45

Думал об этом и проверял и даже заменил табулятор на пробел - не помогает.
Как только пробел помещаю в [] правило перестает работать.

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

FiL
ст. лейтенант
Сообщения: 1328
Зарегистрирован: 2010-02-05 0:21:40

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

Непрочитанное сообщение FiL » 2016-05-11 18:07:42

a какой sed? A то у меня всё работает :)

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

$ sed --version
GNU sed version 4.2.1

icb
лейтенант
Сообщения: 719
Зарегистрирован: 2008-07-15 16:11:11

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

Непрочитанное сообщение icb » 2016-05-11 18:38:39

По идее не должно работать, т.к. в sed используются POSIX регулярки - а там другой синтаксис.
Поменял синтаксис и все заработало.

FiL
ст. лейтенант
Сообщения: 1328
Зарегистрирован: 2010-02-05 0:21:40

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

Непрочитанное сообщение FiL » 2016-05-11 18:42:13

Я тоже думал, что не должно. Но сначала решил проверить.


Вернуться в «SHELL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя