|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Oleg Deribas 2:461/13 07 Feb 2002 17:51:28 To : Zahar Kiselev Subject : sed? -------------------------------------------------------------------------------- 07 Фев 02 21:20, you wrote to all: ZK> Снова использовал sed и в который уже раз наткнулся на одну ZK> мелочь, которая не раз уже мешала. Вот например строчка: ZK> TIT=`echo -n $T | sed 's, ,,g' | sed 's, $,,g'| sed 's,^ ,,g'| sed ZK> 's, ,_,g'` ZK> Это писалось для того, чтобы: Мне кажется, у тебя это как-то не так написано. Я, правда, не большой знаток sed, но если что - меня поправят. ZK> - убрать длинные цепочки повторяющихся пробелов. s/ \{2,\}/ /g ZK> - убрать пробелы в конце строки s/\ *$// g тут ни к чему. ZK> - убрать пробелы в начале строки s/^\ *// тут тоже. ZK> - заменить оставшиеся пробелы на подчеркивания. А почему так? Можно сразу заменить цепочки повторяющихся пробелов на подчеркивания: 's/ \{1,\}/_/g' ZK> Все это _работает_, пусть может быть и не самым оптимальным способом, Hа самом деле многое sed может делать за один проход. Hапример убирать начальные и конечные пробелы. В итоге получается такая строка: sed 's/^ *//;s/ *$//' | sed 's/ \{1,\}/_/g' ZK> но формирует строчку, которую можно уже использовать как имя файла. С ZK> одним большим "но" - если в исходной строчке встречаются символы ` или ZK> ', то их автоматически заменить на подчеркивания не получается. Вполне ZK> очевидно, что и bash и sed воспринимают их как спецсимволы. Используй двойные кавычки, если тебе внутри нужен символ ' Если заменять подчеркиваниями не только пробелы, но и все кавычки, получается так: sed 's/^ *//;s/ *$//' | sed "s/[ \`']\{1,\}/_/g" ZK> И если bash еще можно отучить от этого при помощи добавления символа ZK> \, то вот что сказать sed`у - я так и не понял. А у sed'а с этим проблем нет, что bash ему дает, то он и кушает ;) Oleg --- GoldED+/W32 1.1.4.7 * Origin: CompASS BBS (2:461/13) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/14063c62a593.html, оценка из 5, голосов 10
|