Очень странно себя ведет экронирование в квадратных скобочек в sed.
Задача следующая есть массив.
mas[1]=[name]
mas[2]=[name]
и тд
Задача избавится от [,] в значениях массива
то есть
mas[1]=name
mas[2]=name
и тд
решил пользовать sed и наталкнулся на странное
примеры
~$echo [xuz] | sed 's/[\[,\]]//g'
[xuz]
однако отдельно один символ он срезает
~$ echo [xuz] | sed 's/\[//g'
xuz]
soln@solnworkdesktop:~$ echo [xuz] | sed 's/\]//g'
[xuz
Предположил что не работает конструкция перечисление в квадратных скобках, однако
~$ echo [xuz] | sed 's/[\x,\z]//g'
выводит u в квадратных скобках
В результате нашел такую канструкцию
~$ echo [xuz] | sed 's/[],[]//g'
xuz
Вопрос:
Почему [\[,\]] не работает а /[],[]// работает
???
LinuxForum.Fans
Экранирования [ и ] ,в sed
Автор: soln
5 сообщений
1282 просмотров
В классификаторах заэкранировать можно не все символы.
Из BSDшного man re_format(5):
To include a literal `]' in the list, make it the first character (following a possible `^').
Т.е., в регексе '[][]' первый символ - начало классификатора, второй и третий - сам класс символов, четвертый - конец классификатора.
Видимо, фича такая./[],[]//
спасибо
[root@crawler01 tmp]# echo 'whazzup [] man?' | tr -d '[]'
whazzup man?
Войдите или зарегистрируйтесь, чтобы ответить.