sed — a sedulous sedition

свідомо не шукав знавців на форумах, бо хтів спершу самотужки дійти хоча б якогось, хай не дуже вдалого варіанту рішення… і, здається, подужав — змусив sed розбивати довгі рядки на фрагменти по 1–50 символів.

малював схеми, «курив мани», читав попередні дописи про sed — врешті-решт зконструював для цього таку команду:
sed -e 's/^/♀/;s/$/♂/;s/♀*\( *.\{1,49\}\)[ ♂]/\1\n/g;s/[[:space:]]$//'
не ідеально, але про недоліки пізніше. спершу деконструюю собі на згадку. тут чотири блоки, розділені крапко-комами.

двома першими блоками додаю якісь рідко вживані символи для позначення початку та кінця рядка (♀ та ♂ відповідно):
sed -e 's/^/♀/;s/$/♂/;
наступний блок вибирає з тексту фрагмент довжиною 1–49 символів (.*\{1,49\}) плюс попередній пробіл, якщо він є ( *), так, щоби зліва, можливо, був мій спецсимвол початку рядка (♀*), а справа обов’язково пробіл або спецсимвол кінця рядка ([ ♂]), — і заміняє цей фрагмент (\(…\)) ним же (\1) плюс спецсимвол наступного рядка (\n); повторити операцію, поки ще залишився необроблений текст (g):
s/♀*\( *.\{1,49\}\)[ ♂]/\1\n/g;
ну й останній блок виправляє невеликий побічний ефект — видаляє зайвий символ \n, що опиняється наприкінці після такого перебору:
s/[[:space:]]$//'
результат застосування до двох рядків з попереднього допису:
tivasyk› визначення sedust в urban dictionary
порвало на шмаття =) [↗]
tivasyk› от же ж бісів sed! гризу його, гризу — а
воно ж огризається =/
отримав те, що потрібно. варіант, втім, далеко не ідеальний. очевидний недолік — не впорається з довгими рядками без пробілів. звісно, такі трапляються нечасто — але якщо трапиться, conky просто виведе такі рядки як є, «поламавши» форматування виводу: погано. тож доведеться ще думати, як це врахувати, але як для першої версії — годиться.

що далі? якщо всю конструкцію (twidge + sed) втулити в конфіг conky — воно працюватиме. допоки не зникне зв’язок з інтернетом або через якусь іншу помилку twidge не зможе завантажити стрічку — і тоді видасть непоказне повідомлення про помилку. не дуже гарно.

потрібен bash-скрипт, котрий не просто завантажуватиме і форматуватиме стрічку для виводу в conky, але й відловлюватиме помилки і в такому випадку видаватиме акуратне повідомлення плюс спеціально збережений у локальному файлі архів стрічки.

заготовка є — але детально будео кремим дописом.

0 коментар(ів):

Дописати коментар

увага!
коментарі не модерую, проте спам видаляю нещадно. посилання на інші сайти/блоги за темою допису вітаю.

додаткові можливості розмітки (кутики набрати з клавіатури):
  ‹b›жирний шрифт‹/b›
  ‹i›похилий шрифт‹/i›
  ‹a href="http://tivasyk.info"›посилання‹/a›