Форум — General вопрос мастерам vi 0 0 как в vi задать выражение: заменить в тексте все слова table на tab но не трогать <table> и </table> "table" и... ? Ссылка
Как вариант: :%s/table/tab/g :%s/<tab>/<table>/g :%s/<\/tab>/<\/table>/g :%s/"tab"/"table"/g :-) Думаю, идея ясна. unDEFER ★★★★★ (02.11.06 23:54:50 MSK) Показать ответ Ссылка
т.е. заменить надо table, окруженный пробелами? или не трогать _только_ с кавычками и тэгами? isden ★★★★★ (03.11.06 00:42:18 MSK) Ссылка
Ответ на: комментарий от unDEFER 02.11.06 23:54:50 MSK А это :%s/"tab"/"table"/g зачем? Cris ★ (03.11.06 10:44:19 MSK) Показать ответ Ссылка
_слова_? То есть /[\s.,!?:;]table[:;\s.,!?]/ ? Задача плохо сформулирована. Xellos ★★★★★ (03.11.06 11:10:39 MSK) Ссылка
Ответ на: комментарий от Cris 03.11.06 10:44:19 MSK > А это > :%s/"tab"/"table"/g > зачем? А это у автора надо спросить что имелось в виду под > <table> и </table> "table" и... ? Я так понял, что "table" тоже не надо заменять. unDEFER ★★★★★ (03.11.06 11:51:23 MSK) Показать ответ Ссылка
Ответ на: комментарий от unDEFER 03.11.06 11:51:23 MSK есть дамп бд mysql, там 60 000 строк, в ручную парсить не удобно в качестве имени полей используются недопустимые слова, (table, option, и тд) нужно поменять только имена полей ! -> table varchar(40) NOT NULL default '', но там еще есть контент, html вот его трогать не надо. :%s/table/tab/g не катит anonymous (03.11.06 17:28:30 MSK) Показать ответ Ссылка
Все остальные -- "и%урки, вот как надо (разве я что мог не доэкранировать): %s/[^</"]table\>/tab/g 2LORadmins: это оскорбление, мне картинка говорит "upider", -- за такое и в суд подать можно!!!!! anonymous (03.11.06 20:23:44 MSK) Показать ответ Ссылка
Ответ на: комментарий от anonymous 03.11.06 20:23:44 MSK Только самые умные уже должны были догадаться, что %s/([^</"]|^)table\>/tab/g только слеши надо расставить anonymous (03.11.06 20:25:06 MSK) Ссылка
Ответ на: комментарий от anonymous 03.11.06 17:28:30 MSK > :%s/table/tab/g не катит А дальше прочесть не судьба было? Идея в том чтобы заменить сначала всё а затем вернуть то что не надо было заменять. unDEFER ★★★★★ (03.11.06 20:28:29 MSK) Показать ответ Ссылка
Ответ на: комментарий от unDEFER 03.11.06 20:28:29 MSK > А дальше прочесть не судьба было? Идея в том чтобы заменить сначала всё а затем вернуть то что не надо было заменять. На PHP пишем, да? См контр пример, гений ты наш: <tab> <table> tab table после всего описанного шаманства превратиться в <table> <table> tab tab а должно быть <tab> <table> tab tab anonymous (03.11.06 20:37:44 MSK) Показать ответы Ссылка
Ответ на: комментарий от anonymous 03.11.06 20:37:44 MSK :%s/\([^"<]\/\?\|^\)table\([^">]\|$\)/\1tab\2/g sdio ★★★★★ (03.11.06 20:59:17 MSK) Ссылка
Ответ на: комментарий от anonymous 03.11.06 20:37:44 MSK > На PHP пишем, да? Нет, на PHP не пишу. Да, не подумал о таком варианте, со всяким бывает. Но у тебя они и в прямь присутствуют эти <tab> в твоём конкретном примере?? unDEFER ★★★★★ (03.11.06 22:40:57 MSK) Показать ответ Ссылка
Ответ на: комментарий от unDEFER 03.11.06 22:40:57 MSK Но, прикол то в том что твоё выражение тоже не катит вовсе. Вот, sdio всё правильно написал. unDEFER ★★★★★ (03.11.06 22:44:05 MSK) Показать ответ Ссылка
Ответ на: комментарий от unDEFER 03.11.06 22:44:05 MSK >Но, прикол то в том что твоё выражение тоже не катит вовсе. Для непонятливых повторяю: слеши надо расставить, мне это было лень. Если не веришь, что работает, смотри: %s/\([^</"]\|^\)table\>/tab/g anonymous (06.11.06 09:59:11 MSK) Показать ответ Ссылка
Ответ на: комментарий от anonymous 06.11.06 09:59:11 MSK И у меня imho получилось несколько короче чем у sdio ;) anonymous (06.11.06 10:04:53 MSK) Ссылка