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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Bash, как получить текстовую колонку заданной ширины  (Прочитано 2779 раз)

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

adawdp

  • Автор темы
  • Гость
Здр.Все!
—Как получить допустим используя bash-скрипт текстовую колонку такого вида?
Разрыв не должен быть посередине слов только пробел может меняться на разрыв строки.

sed -e :a -e 's/^.\{1,64\}$/ &/;ta' 3pa3oK.txt > 3pa3oK2.txt—Это не подходит.Просто добавляет пробелы в начале строки.
sed -i -e 's/.\{64\}/&\n/g' 3pa3oK.txt
sed -i 's/.\{64\}/&\n/g' 3pa3oK.txt
—Это тоже не подходит, режет красиво но посимвольно, короче слова разрезаются.

—Раньше использовал редактор EditPadPro в Wine работает convert > wrapping > line break > both margin , но хотелось бы иметь штатное средство в Ubuntu.

—Может есть готовый скрипт? Подскажите.


Оффлайн gva230

  • Активист
  • *
  • Сообщений: 981
  • GUI-овый линуксоид
    • Просмотр профиля
    • Моя дикая страничка
хотелось бы иметь штатное средство в Ubuntu.
gedit разве такое не может?
Kubuntu - наше фсё! :Ь

adawdp

  • Автор темы
  • Гость
хотелось бы иметь штатное средство в Ubuntu.
gedit разве такое не может?
—Может и может, расскажите тогда как! :)
—Если установить плагины Gedit в меню «правка» появляется «Объединить строки» и «Разбить строки» и соответствующие клавиатурные комбинации.
—Строки объединяет, но разбивает по своему усмотрению не всегда и не каждый текст, я не разбирался почему, задать настройки на количество символов там по-моему нельзя :(.

—Возможно это как-то реализуется в LibreOffice ? Скорее всего макрос тоже писать нужно...

—Я надеюсь что всё же есть готовый скрипт bash о котором и спрашиваю.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
man foldНе?

adawdp

  • Автор темы
  • Гость
man foldНе?

—Спасибо, тяжело, но буду читать раз нет или не известно никому готового решения, задача то стандартная...
—Неужели каждый для себя персонально написал скрипт и тихонько под одеялом его использует? :)

Оффлайн gva230

  • Активист
  • *
  • Сообщений: 981
  • GUI-овый линуксоид
    • Просмотр профиля
    • Моя дикая страничка
—Неужели каждый для себя персонально написал скрипт и тихонько под одеялом его использует? :)
Обычно для форматирования текста используется текстовый процессор вроде LibreOffice Writer: выравнивание по ширине - ... - профит.
Kubuntu - наше фсё! :Ь

adawdp

  • Автор темы
  • Гость
—Ещё раз спасибо это слишком мощный инструмент для такой задачи.
fold -w 64 -s 3pa3oK.txt > 3pa3oK2.txt; more 3pa3oK2.txt
—Ну вот так после прочтения руководства вроде бы режет, но не знаю пока как выровнять по правому и левому краю чтобы получился прямоугольник из текста¸both margin домумаюсь ли я до неё сам не знаю...:(

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net

adawdp

  • Автор темы
  • Гость
—Да, я понял, спасибо. GNU Emacs 23 есть в центре приложений, par тоже решает проблему. Короче можно вопрос закрывать.
—Сколько раз убеждался поиск нужно начинать с англоязычных ресурсов, всё же там больше материалов...

Пользователь решил продолжить мысль 06 Апреля 2013, 23:19:19:
—Вообще стояла задача из скопированного полностью  вебстраницы, удалить лишние пробелы, табуляцию. Т.е. сделать одну строку, а потому из этой одной строки сделать 1 колонку текста заданной ширины.
—Я не просто не программист, я вообще не программист :D и не собираюсь им становиться, ну нужно было выполнить такую задачу.
—Скрипт получился такой.
—Копируем например содержимое данной страницы в файл 3pa3oK.txt после применения скрипта получаем этот же файл в виде колонки в 80 символов.3pa3oK2.txt — паразитный промежуточный файл.
—Когда в странице много всяких спецсимволов иногда par выдаёт неопознанную ошибку на сайтах с кириллицей.
#!/bin/bash
sed -i -e 's/$/ /' 3pa3oK.txt | tr '\n' ' '     # добавляет пробел в конец сток
sed -i -e ':a;N;$!ba;s/\n//g' 3pa3oK.txt        # объединяет строки
sed -i 's/[ \t][ \t]*/\ /g' 3pa3oK.txt          # меняет пробелы и таб. на один пробел
sed -i 's/^[ \t]*//;s/[ \t]*$//' 3pa3oK.txt     # убирает пробелы и таб. конца и начала файла
fold -w 80 -s 3pa3oK.txt > 3pa3oK2.txt          # делит строку на 80 символов
par 80j < 3pa3oK2.txt > 3pa3oK.txt              # выравнивает строку слева и справа

—Потому если настоящим программистам не нравится, можно подправить чтобы было может правильнее, может красивее. :)
« Последнее редактирование: 06 Апреля 2013, 23:19:19 от adawdp »

appomsk

  • Автор темы
  • Гость
Почитал, перечитал, все равно не понял. В чем задача? Правый край рваный или нет, если нет, то добивать пробелами внутри сточки? Если первое, то это делается очень просто, тремя утилитами на выбор (об уборке лишних пробелов и табуляций - это, как сами увидели - просто) если второе, то это вчерашний день, работает только с моноширными шрифтами, и делается элементарно тоже, но библиотекой Perl - Text::Autoformat. (и еще чем-нибудь Лексиконом 90-х годов, к примеру).

Прочитал поздно, а так на будущее - пример входа, пример выхода и комментарий - и ответ будет получен в десятки раз быстрее.

adawdp

  • Автор темы
  • Гость
—Здр.!
Спасибо что заметили,чтобы была ясна задача, я специально предоставил картинку :)! Да речь шла именно о моноширинных шрифтах (Вы  написали «моноширными шрифтами»,я посмотрел таких вроде не существует, наверное опечатка).
—Perl не входит в мои планы, если что-то готовое и работающее в виде программы я за, а так я дальше bash идти не собираюсь, я просто пользователь! Смею предположить, что в bash возможно как-то реализуется perl если есть что-то готовое для данной задачи буду благодарен.
—Хотя вот эта моя аляповатая конструкция меня пока устраивает, правда на кириллических текстах par часто некорректен :( с текстом на латинице всё в порядке. Да я ещё одну там строчку „доваял“ :) удалять „слэши“ sed -i 's/[\/][\/]*/\%/g' 3pa3oK.txt         # замена «\» «/» для работы par поставил её первой.

appomsk

  • Автор темы
  • Гость
Лексикон еще и переносы расставлял. До сих пор в библиотеке Машкова (опять ошибся - по памяти пишу) - не получается почитать с какого-нибудь эээ... планшета.

Зы - пользуйтесь современными средствами. Monospace fonts хороши только для работы с кодом и для ввода/вывода на терминал. Задача связана с HTML? Все есть и все можно - для любого шрифта и любого текста.


adawdp

  • Автор темы
  • Гость
Задача связана с HTML?
— Здр.! Да если бы с HTML чего бы я тут изобретал велосипеды, :) там всё редакторы автоматически делают.
— Задача с арабскими, фарси и урду шрифтами, должен быть некий перевод где каждое слово должно совпадать под другим и так далее... Короче специфическое дело... + русский текст справа - налево.
— А чтобы поставить правильно задачу программисту, нужно ещё было придумать как правильно её сформулировать, а иначе какой от программиста толк, если он не понимает что от него хотят? :)
— Вот в процессе постановки этой задачи я и занимался расстановкой слов и символов. Ну всё уже, программист работает. Спасибо за внимание!

 

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