Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Как добавить пробел после каждого знака в любом тексте? Любая программа устроит.  (Прочитано 3282 раз)

0 Пользователей и 1 Гость просматривают эту тему.

adawdp

  • Автор темы
  • Гость
— Какой программой лучше всего преобразовать тект вида :«Какой программой лучше всего преобразовать тект вида»,- в текст вида:«К а к о й  п р о г р а м м о й   л у ч ш е  в с е г о  п р е о б р а з о в а т ь  т е к т  в и д а». Т.е после каждого знака добавить пробел.
— В LibreOffice вроде не нашёл стандартных функций для этого, может плохо искал, а может нужно макрос писать…
— Может это как-то просто делается из терминала? Может есть готовый рецепт? А может с помощью регулярных выражений?

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5626
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
's/\S/& /g' Проверяйтеecho "Какой программой лучше всего преобразовать тект вида" | sed 's/\S/& /g'Только получатся удвоенные пробелы между словами. Устраивает? Или уточните задание.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

adawdp

  • Автор темы
  • Гость
Azure, спасибо устраивает! Как раз именно так и нужно! Подожду ещё ответов и потом отмечу тему как решённую.

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5626
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Всё таки вопрос — как должны обрабатываться пробелы и знаки пунктуации/окончание строки.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн maks05

  • Старожил
  • *
  • Сообщений: 6212
    • Просмотр профиля
adawdp, вам нужны именно пробелы (как символы) или просто надо сделать больше расcтояние между буквами?
Если второе, то в LibreOffice отмечаем нужный текст мышкой, нажимаем ПКМ, в контекстом меню выбираем "Символы..." (или меню "Формат"/"Символы..."), потом вкладку "Положежние", а в ней в выпадающем списке "Интервал" указываем значение "Разреженный", после чего в соседнем окошке меняем "пт" на нужный в данный момент. Жмём "ОК".

Ну, или правильней будет создать соотвествующий стиль.
« Последнее редактирование: 29 Март 2014, 02:10:06 от maks05 »

adawdp

  • Автор темы
  • Гость
maks05, спасибо, я записал приведенный Вами способ в шпаргалку. Пригодится!
— А вообще мне нужны были именно пробелы между символами. Цель чтобы нельзя было осуществить поиск по данному тексту, только и всего. Ну а также чтобы ссылка не распознавалась как ссылка. Я понимаю, что есть более правильные или иные способы для этого, ну там картинка к примеру, но и так устраивает. Тексты небольшие ссылок немного.
Azure, спасибо ещё раз, у меня не сверхзадача слава богу :) конец строки неважен вот в таком варианте мне как раз.
sed -i 's/\S/& /g' test1.txt test2.txt— Ну чтобы правило сами файлики.
— И ещё скажите „\S“ что есть такое, надо понимать что любой символ, я не встретил ничего подобного набрав команду «man sed», я вообще не IT специалист, ну так могу там кое-что „со словарём“ изобразить :)! Потому прошу снисхождения :)!
— «\буква соответствуют одному любому символу из определённого класса символов, в частности \s - это любой пробельный символ»,- понял, это регулярное выражение…
— Всё, всем ещё раз спасибо, не будет отвлекаться по мелочам! :) Задача решена!
« Последнее редактирование: 29 Март 2014, 06:57:40 от adawdp »

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5626
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
— И ещё скажите „\S“ что есть такое, надо понимать что любой символ, я не встретил ничего подобного набрав команду «man sed», я вообще не IT специалист, ну так могу там кое-что „со словарём“ изобразить :)! Потому прошу снисхождения :)!
— «\буква соответствуют одному любому символу из определённого класса символов, в частности \s - это любой пробельный символ»,- понял, это регулярное выражение…
  • \s - это любой пробельный символ [ \t\r\n\v\f] => \S - это любой НЕ пробельный символ
  • \w - это любой азбучный символ [A-Za-z0-9_] => \W - это любой НЕ азбучный символ
  • \b - это граница слова \< \> => \B - это НЕ граница слова
  • \d - это цифра [0-9] => \D - это НЕ цифра (у меня не работает почему-то…)

Лучше смотреть man grep ;)

Пользователь решил продолжить мысль 29 Март 2014, 15:10:58:
нужны были именно пробелы между символами. Цель чтобы нельзя было осуществить поиск по данному тексту, только и всего.
А почему именно пробелы? Можно ведь использовать какие-то вообще непечатаемые символы, тот же <NULL> например… (или x05, или x07…)sed 's/\S/&\x00/g'
« Последнее редактирование: 29 Март 2014, 15:10:58 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн staso

  • Активист
  • *
  • Сообщений: 437
    • Просмотр профиля
В Libre Office. Найти и заменить. Найти - . (точка) Заменить на - &  (амперсанд и пробел)

adawdp

  • Автор темы
  • Гость
Azure, я Вас приветствую! Я попробовал для удовлетворения любопытства:
sed -i 's/\S/&\x00/g' 3pa3oK1.txt
sed -i 's/\S/&\x05/g' 3pa3oK2.txt
sed -i 's/\S/&\x07/g' 3pa3oK3.txt
— Но что-то у меня не получилось :( … Исходный файл 3pa3oK.txt, в архиве после применения команды 3pa3oK1,2,3.txt.
— B в терминале через
echo "Вставить то, что нужно изменить" | sed 's/\S/&\x00/g'тоже не работает :( … Что-то не так? Или я что-то не так понял?
— Вроде и тема пустяковая, но спасибо, что не потеряли интерес!
staso, спасибо, работает безотказно! А главное простота необыкновенная! Только нужно не забывать ставить „галочку“ в диалоговом окне где регулярные выражения.
« Последнее редактирование: 29 Март 2014, 16:50:50 от adawdp »

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5626
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Я просто смотрел всё в консоли… Ради интереса cat 3pa3oK1.txtили что-нибудь поищите в нёмgrep Trinity 3pa3oK1.txt;)
и приводится в нормальный вид довольно легко sed 's/\x00//'
Пользователь решил продолжить мысль 29 Март 2014, 17:06:01:
echo "Вставить то, что нужно изменить" | sed 's/\S/&\x00/g'тоже не работает :( … Что-то не так? Или я что-то не так понял?
Работает, в том-то и фокус. После каждого символа вставлен «00». echo "Вставить то, что нужно изменить" | sed 's/\S/&\x00/g' | hd -cНайдите что-нибудь:echo "Вставить то, что нужно изменить" | sed 's/\S/&\x00/g' | grep --color=auto чтоДля сравненияecho "Вставить то, что нужно изменить" | grep --color=auto что
« Последнее редактирование: 29 Март 2014, 17:06:01 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн staso

  • Активист
  • *
  • Сообщений: 437
    • Просмотр профиля
Цитировать
.
Представление любого отдельного символа, кроме разрыва строки или конца абзаца. Например, условие поиска "п.ск" возвращает и "пуск", и "писк".

Цитировать
& или $0
Добавление строки, найденной с помощью условий поиска в поле Найти, к элементу в поле Заменить на при выполнении замены.
Например, если ввести "авто" в поле Найти и "&трасса" в поле Заменить на, слово "авто" будет заменено словом "автотрасса".
Также можно ввести "&" в поле Заменить на, чтобы изменить Атрибуты или Формат строки, найденной в соответствии с условиями поиска.

Это просто копипаст из справки офиса. Все на поверхности. Главное  - правильно задать вопрос.

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7080
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
adawdp, если цель - побороть поиск, то есть куча других вариантов - самый простой - замена русских букв английскими и английских русскими (при одинаковом написании, тут от шрифта зависит).А ещё можно от букв избавиться - экспортировать в растр или векторную графику. Можно PDF сделать, в котором буквы будут, но искать или копировать будет невозможно.

Оффлайн Artif

  • Участник
  • *
  • Сообщений: 211
    • Просмотр профиля
echo "Какой программой лучше всего преобразовать тект вида" | sed 's/\S/& /g'Только получатся удвоенные пробелы между словами.

Развивая мысль - схлопнуть пробелы в один:

echo "Какой программой лучше всего преобразовать тект вида" | sed 's/\S/& /g' | sed 's/[[:space:]]*/ /g'
Но, при всём уважении к Sed, Awk и т.п., они очень неочевидны. Каждый раз надо очень много вычитывать, почти что каждый раз теорему доказывать. Но, они крайне эффективны, для тех, кто помнит иероглифы, например.

Простым и очевидным способом, вот:

(Нажмите, чтобы показать/скрыть)

С применением Гугла допиливается очень гибко и довольно легко. А главное - понятно, через год, и через два.
« Последнее редактирование: 30 Март 2014, 16:35:56 от Artif »

Оффлайн gcib

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
    • Феодосия
банкет
adawdp, если цель - побороть поиск, то есть куча других вариантов - самый простой - замена русских букв английскими и английских русскими (при одинаковом написании, тут от шрифта зависит).А ещё можно от букв избавиться - экспортировать в растр или векторную графику. Можно PDF сделать, в котором буквы будут, но искать или копировать будет невозможно.
Вариантов масса. Но самый эффективный, на мой взгляд, - загнать всё под Flash!
« Последнее редактирование: 30 Март 2014, 17:27:20 от gcib »
Всякое мнение субъективно

 

Страница сгенерирована за 0.06 секунд. Запросов: 24.