Форум — General как удалить все пробелы в тексте? 0 1 Через командную строку стандартными средствами. Подскажите, пожалуйста. Ссылка
echo "sdfsd sdfsdf dsfsdf" | sed s/' '//g sed s/' '//g -i <file_name> kostik87 ★★★★★ (07.01.12 16:02:31 MSK) Показать ответы Ссылка
Ответ на: комментарий от kostik87 07.01.12 16:02:31 MSK Не могли бы Вы мне разъяснить суть каждой составляющей этой команды? Vekt ★ (07.01.12 16:03:45 MSK) автор топика Ссылка
Ответ на: комментарий от kostik87 07.01.12 16:02:31 MSK Нет, вы, кажется, не поняли. Уже есть файл с текстом, как в нем выпилить все пробелы? Vekt ★ (07.01.12 16:05:36 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от Vekt 07.01.12 16:05:36 MSK Вообще все пробелы и только пробелы:sed s/' '//g -i <file_name> Все пробелы и символы табуляции так:sed s/'\s'//g -i <file_name> Только символы табуляции так : sed s/'\t'//g -i <file_name> kostik87 ★★★★★ (07.01.12 16:12:42 MSK) Показать ответ Ссылка
Ответ на: комментарий от kostik87 07.01.12 16:12:42 MSK Спасибо! Vekt ★ (07.01.12 16:14:54 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от Vekt 07.01.12 16:14:54 MSK Замена нескольких пробелов одним: sed "s/ \{2,5\}/ /g" -i <file_name> В данном случае от 2 до 5 стоящих подряд пробелов заменяются одним. kostik87 ★★★★★ (07.01.12 16:20:03 MSK) Показать ответ Ссылка
Ответ на: комментарий от kostik87 07.01.12 16:20:03 MSK Какой-то вырвиглазый синтаксис у этого sed) Vekt ★ (07.01.12 16:22:07 MSK) автор топика Показать ответы Ссылка
Ответ на: комментарий от Vekt 07.01.12 16:22:07 MSK Это регулярные выражения, при чём простые. s/// - замена после «s/ и перед \{ указан символ, в данном случае пробел, ' ' - можно и так \{2,5\} - число повторений блоков символов, указанные перед интервалом \ - экранирование, что бы { и } не рассматривались как конструкции интерпретатоа (bash) g - все включения в файла -i - работать с файлом kostik87 ★★★★★ (07.01.12 16:31:23 MSK) Показать ответы Ссылка
Ответ на: комментарий от Vekt 07.01.12 16:22:07 MSK man Регулярные_выраженияНу или простой способ проникнуться: echo "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see' под рутом redgremlin ★★★★★ (08.01.12 23:15:53 MSK) Показать ответ Ссылка
Ответ на: комментарий от kostik87 07.01.12 16:31:23 MSK \ - экранирование, что бы { и } не рассматривались как конструкции интерпретатоа (bash)в пределах «» они и не рассматриваются. просто posix re требуют их экранироватьв extended posix re их не нужно экранировать, для этого у сед есть ключик -rне надо трясти своим невежеством в очередной раз anonymous (08.01.12 23:17:37 MSK) Ссылка
Ответ на: комментарий от redgremlin 08.01.12 23:15:53 MSK Я читал про это. Мне не нужен патч Бармина-все пока не так плохо Vekt ★ (08.01.12 23:18:11 MSK) автор топика Ссылка
Ответ на: комментарий от kostik87 07.01.12 16:31:23 MSK g - все включения в файла 4.2. в строке anonymous (08.01.12 23:19:36 MSK) Ссылка
Ответ на: комментарий от kostik87 07.01.12 16:31:23 MSK \{2,5\} - число повторений блоков символов, указанные перед интервалом не «блоков символов» а регулярных выражений, там можно воткнуть (as*df){6,66}жги дальше, малыш anonymous (08.01.12 23:22:24 MSK) Ссылка
Ответ на: комментарий от kostik87 07.01.12 16:02:31 MSK sed s/' '//gtr -d ' ' <f1 >f2 anonymous (08.01.12 23:24:23 MSK) Показать ответ Ссылка
Ответ на: комментарий от anonymous 08.01.12 23:24:23 MSK Такой способ требует использования промежуточного файла, с sed -i проще. kostik87 ★★★★★ (09.01.12 16:23:43 MSK) Ссылка