LINUX.ORG.RU

sed, который «я так вижу»

 ,


5

2

Решился я, наконец, выложить свой вариант sed-а, который меня устраивает. В отличии от оригинального, он работает с буфером целиком, а не построчно. Имеет дополнительный и целый стек буферов, а также счётчик, что позволяет несложно обрабатывать вложенный развесистый синтаксис, всевозможные вложенные блоки. Умеет символ '\0', правда для этого требует отсутствия любого другого символа в тексте/паттернах/заменах. Умеет перекодировать через iconv. regex-ы, подгружаемые и имена выгружаемых файлов могут быть динамически сформированы в процессе исполнения. Пока не умеет матчить номера строк, но, думаю это и не надо. Зато буковок под команды — 46.

Полное описание

В качестве примеров приложены скрипты для очистки html-ей после офисов (open/ms) и из lib.ru/samlib.ru для приемлемого результата для ручной правки или просмотра читалками.

★★★★★

Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от be_nt_all

Я уже писал, 1997 как минимум особенно если перейти на каталог выше и посмотреть на крутящуюся гифку с new! рядом с этой публикацией),

Не, в 97 году я эту гифку не юзал, она от 17 октября 2000 года.

vodz ★★★★★
() автор топика
Ответ на: комментарий от vodz

А в форум вы для кого пишете? Не для себя ли?

Конечно нет. Как можно до такого додуматься?

Отож. Когда-то и linux был в виде курсовой и был опубликован в рассылке, но я на такое и не замахивался.

А вы читали ту рассылку? Ничего похожего на «я высрал, кто хочет жрите, делать нормальный продукт не собираюсь» там не было.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

делать нормальный продукт

А шо вы таки понимаете под нормальным продуктом?

Утилита, судя по всему, вылизана за не один десяток лет использования (так что багов особых не предвидится), документирована, примеры прилагаются. Что ж ненормального то? Упаковка не та?

Если кого заботит сохранность и популяризация, ну так нужно просто выложить зеркало на github и перевести документацию на английский. Можно ещё на хабр что-то написать. Первыми двумя вещами может и сам займусь, второй, ну когда какой-то опыт использования накопится (вместе с какой-то ретроспективой про пакетную обработу текста в unix).

be_nt_all ★★
()
Последнее исправление: be_nt_all (всего исправлений: 1)
Ответ на: комментарий от vodz

Как я уже говорил — авторам это почти до лампочки, только один кейс тут может для них помочь, когда они сами свой исходник потеряют.

Между прочим, это ситуация не то, чтобы прямо повседневная, но и не такая уж невероятная. А гитхаб ещё может и помочь отследить, когда чего поменял.

Ну а ещё может случиться так, что через пару лет отыщется человек, которому это реально нужно, и он не будет писать свой велосипед, а поможет существующему. Да, это тоже не слишком вероятно, но иногда бывает.

Дело хозяйское, конечно.

Проект одобряю.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от slovazap

Конечно нет. Как можно до такого додуматься?

Достаточно открыть ваш профиль и прочитать пару-тройку ваших топиков в форум.

А вы читали ту рассылку?

Ту - нет. Но что-то припоминается, что примерно так и было, как сказано.

я высрал, кто хочет жрите, делать нормальный продукт не собираюсь

Высрали тут — вы. Как и жрёте хрен знает что, раз так о людях думаете, что жрут. Продукт действительно не собираюсь. Ибо это никакой не продукт, то что хоть как-то тянет, я отдавал на главную, и вообще людям, достаточно вести мой email в гугле. А тут я высказался, как бы я хотел, чтобы выглядел sed и дал реализацию, которую сам пользуюсь. Что там у вас засвербило - это к доктору.

vodz ★★★★★
() автор топика
Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от hobbit

Между прочим, это ситуация не то, чтобы прямо повседневная, но и не такая уж невероятная.

Делайте бекапы, оно реально спасает, проверено :)

Ну а ещё может случиться так, что через пару лет отыщется человек, которому это реально нужно, и он не будет писать свой велосипед, а поможет существующему. Да, это тоже не слишком вероятно, но иногда бывает.

Мне самому идея не нравится. Я знаю sed, но не люблю. Это устаревший подход. Он создавался, когда 64k (да, не 640) как-то, но хватало, и было куча студентов, которым в Беркли ради зачёта выдали задачку как сделать минимально Тьюринг-полный язык, но именно минимальный, и вдруг оно вошло как стандарт. Вначале как ed, потом уже sed. Но так и осталось чем-то вроде grep с правкой, так и юзается в основном, чтто-то одно подправить. А тексты для lib.ru я обычно правлю ттоже в своём редакторе, уже полноценным, макросы давно выработанны, скрипты написаны, руки сами без участия мозга их уже набирают :)

vodz ★★★★★
() автор топика
Ответ на: комментарий от vodz

я обычно правлю ттоже в своём редакторе

Есть идея. Если покажешь htmlcleaner на bsed избавляющий полностью и аккуратно от js, то не важно, что тут будут «трубить», один человек точно будет пользовать эту прогу, то бишь я.

anonymous
()

Архив с исходным текстом программы.

Вроде же ты взрослый дядька, почему не на git хостинге опубликовал?

torvn77 ★★★★★
()
Ответ на: комментарий от torvn77

Вроде же ты взрослый дядька, почему не на git хостинге опубликовал?

Ну надо же, три страницы и вдруг такой оригинальный вопрос.

vodz ★★★★★
() автор топика
Ответ на: комментарий от vodz

Публикация на git хостинге позволит одним получать актуальную версию твоего sed’а, а другим присылать багфиксы и улучшения.
Публикация архивом не позволит ни того, ни другого(ну понятно что можно архивами обмениваться, но зачем, если это можно автоматизировать?)

torvn77 ★★★★★
()
Ответ на: комментарий от torvn77

Публикация на git хостинге позволит

Ну понятное дело, что без тега сарказм тут никак не парсится.

ну понятно что можно архивами обмениваться,

Зачем архивами? Можно и патчи на email.

vodz ★★★★★
() автор топика
Ответ на: комментарий от torvn77

Я серьёзно, без сарказма

Понятное дело что ты. Но «ты» тут не один. Или один?

anonymous
()
Ответ на: комментарий от torvn77

И я думаю что тебе, @vodz, лучше разместить свой код на git самому, чем это сделает куча твоих пользователей породив кучу несвязанных и мало чем отличающихся форков.
А так в случае если опубликуешь ты то эта куча соберётся под твоим началом и соберёт все сделанные ими исправления и улучшения в одном месте улучшив этим твой проект.

torvn77 ★★★★★
()
Ответ на: комментарий от anonymous

onclick и прочую ересь я там не увидел.

Это всё равно работать без скрипта не будет, но даже оставить полезно, когда убедившись, что тут по делу, нужный скрипт потом обратно вставить.

А подобное и я могу:

Странно вы пишите. Заявили в первой строке bash, а им не пахнет. Кавычек понаставили всяких, где нафиг не надо, типа «x» или там «$(($OPTIND - 1))» или SRCNAME=«$1». С тегами по первым буквам я уже обжегся и вставляю вначале пробел, а потом с ним и ищу.

vodz ★★★★★
() автор топика
Ответ на: комментарий от vodz

Это всё равно работать без скрипта не будет

Только если скрипт не в самом «событии» (есть такая хня).

Заявили в первой строке bash, а им не пахнет.

Функции. Мож и без них, но мне так удобнее. А башизмов нет - это точно.

anonymous
()
Ответ на: комментарий от anonymous

Только если скрипт не в самом «событии» (есть такая хня).

А, ну да.

Функции. Мож и без них, но мне так удобнее.

Функции же были уже лет 35 назад. Как щас помню...

vodz ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Плохо «помнишь».

Мало кто тут найдётся, кто может мне что-то в dash новое открыть, я его и переписывал в busybox и патчи автору отправлял. Что там у вас за проблемы с функциями?

$ foo() { echo f=foo; }
$ foo
f=foo

vodz ★★★★★
() автор топика
Ответ на: комментарий от vodz

Что там у вас за проблемы с функциями?

Чорт! У меня опять shell заглючил, чтоле? Сорян, прошла дизинфа. Каюсь. Не хотел. Но эт уже не первый раз так меня shell имеет. Откуда «ноги» растут - хз.

anonymous
()
Ответ на: комментарий от cursed

У меня другой вопрос, я вот как все там оттянуд в чечне, отдал много своей жизни. А вы пингвинята будете там когда нибуд, или товарищ майор и прочее переполнило?

cursed
()

Changelog

Обновил версию, вставив TRE-regex библиотеку. Теперь можно нежадный синтаксис с дополнительным "?" и быстрее работать стало, так как юзаю от туда n-функции без преобразований в null-terminated. Пришлось поменять \w на \g, так как \w - удобное сокращение к [[:alnum:]_] . Так что начал файлик Changelog :)

vodz ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.