LINUX.ORG.RU

Вышла версия 1.8 построчного текстового редактора ed

 , ,


0

1

GNU ed — это реализация стандартного строчноориентированного текстового редактора Unix.
Редактор ed используется для того, чтобы создавать, отображать, исправлять и манипулировать текстовыми файлами, как интерактивно, так и в скриптах.

В новой версии исправлена существенная ошибка: теперь ed заканчивает чтение stdin, достигая конца файла (EOF). В прошлой версии требовалось получить EOF дважды.

Новую версию можно загрузить здесь.

>>> Подробности

★★★★★

Проверено: Shaman007 ()

Мощный changelog, ничего не скажешь.

AX ★★★★★ ()

Починили баг, когда он знак вопроса выдавал в ответ на любую введенную последовательность символов?

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

Починили баг, когда он знак вопроса выдавал в ответ на любую введенную последовательность символов?

Как повторить?

cruxish ★★★★ ()

А вообще ed не нужен, есть sed.

cruxish ★★★★ ()
Ответ на: комментарий от cruxish
Let's look at a typical novice's session with the mighty ed:

golem$ ed

?
help
?
?
?
quit
?
exit
?
bye
?
hello?
?
eat flaming death
?
^C
?
^C
?
^D
?
buddhist ★★★★★ ()

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

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

Ну кагбэ

some@test ~> ed
a
hello wor^Wlinux.org.ru
.

?
w test.txt
24
q
some@test ~> cat test.txt 
hello wor^Wlinux.org.ru
все работает, просто кто-то не умеет им пользоваться.

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

Как повторить?

Вводишь любую последовательность символов.

К.О.

Aceler ★★★★★ ()

Я джва года этого ждал! Лучший редактор на свете стал ещё лучше!

true_admin ★★★★★ ()
Ответ на: комментарий от quantum-troll

А вообще ed не нужен, есть perl.

Fixed.

ещё раз починил

Stil ★★★★★ ()

Зачем нужен такой редактор до сих пор? Даже на допотопный системах на КР580ВМ80 с 16КБ памяти были более человеческие редакторы. Кроме скриптов, для которых тоже есть инструменты получше.

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

А вообще, perl не нужен, есть python.

А вообще, компьютеры не нужны.

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

Ну, вдруг у кого-то есть машина послабее, чем КР580ВМ80. Им-то и пригодится.

Oleaster ★★★ ()

Рядом с новостью о Left 4 Dead смотрится весьма гармонично...

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

Даже на допотопный системах на КР580ВМ80 с 16КБ памяти были более человеческие редакторы.

Какие это?

Зачем нужен такой редактор

Мелкие правки вносить удобно — если точно знаешь что где надо поправить, например раскомментировать 16ю строку:

% ed /etc/somefile.conf
16s/^#//p
wq

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

% ed /etc/somefile.conf
16s/^#//p
wq

Чем это лучше

sed -i '16s/^#//'
?

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

Вводишь любую последовательность символов.

Не повторяется.

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

да, какой-то такой батхерт у меня был при crontab -e в солярке

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

Тем лучше, что sed создаёт временный файл, а ed редактирует на месте. В случае очень больших файлов получается значительная разница в производительности.

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

Мелкие правки вносить удобно — если точно знаешь что где надо поправить, например раскомментировать 16ю строку:

А можно узнать, когда возникает такие ситуации, когда знаешь, где и что нужно поправить, но это почему-то раньше не было поправлено?

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

sed создаёт временный файл, а ed редактирует на месте

Да, так и есть. Благодарю, буду иметь в виду.

// Пока проверял, вспомнил про ex(1) и про способность vim работать как ex

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

Тем лучше, что sed создаёт временный файл, а ed редактирует на месте. В случае очень больших файлов получается значительная разница в производительности.

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

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

Тем лучше, что sed создаёт временный файл, а ed редактирует на месте. В случае очень больших файлов получается значительная разница в производительности.

Про ключ -i для sed не слышали?

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

Про ключ -i для sed не слышали?

А про inotifywait слышали, чтобы проверить?

pwd
/home/user/tempdir
echo "blah" > text.txt

В соседней вкладке терминала

inotifywait -m -r tempdir/

sed -i "s/bla/xxx/g" text.txt

И читаем вывод inotifywait

Watches established.
tempdir/ OPEN text.txt
tempdir/ CREATE sedU4SuRI
tempdir/ OPEN sedU4SuRI
tempdir/ ACCESS text.txt
tempdir/ MODIFY sedU4SuRI
tempdir/ ATTRIB sedU4SuRI
tempdir/ ATTRIB sedU4SuRI
tempdir/ CLOSE_NOWRITE,CLOSE text.txt
tempdir/ CLOSE_WRITE,CLOSE sedU4SuRI
tempdir/ MOVED_FROM sedU4SuRI
tempdir/ MOVED_TO text.txt

Обратите внимание на CREATE sedU4SuRI.
Создаётся временный файл sedU4SuRI.

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

Можно проще сделать — ls -i показывает inode, при редактировании через sed он меняется.

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

ed редактирует на месте.

А как в файл вставить в POSIX один байт за o(1)?

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

А как в файл вставить в POSIX один байт за o(1)?

Если байт в конце — просто дописать, если ближе к середине — уже сложнее.

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

А можно узнать, когда возникает такие ситуации, когда знаешь, где и что нужно поправить, но это почему-то раньше не было поправлено?

Достаточно часто, к тому же можно номер строки и не знать. В ed можно как в полноценном редакторе писать, просто не всегда удобно.

Xenius ★★★★★ ()

Он вообще для чего-нибудь полезного используется?

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

Тем лучше, что sed создаёт временный файл, а ed редактирует на месте. В случае очень больших файлов получается значительная разница в производительности.

Гигабайтными текстовыми файлами ворочаешь? :)

А если серьёзно, то как раз подход с временным файлом лучше, так как обеспечивает транзакционность редактирования — в случае преждевременного завершения работы (падение, ^C или ещё чего) sed оставит оригинальный файл нетронутым, а ed превратит его в недоотредактированный мусор.

anonymous ()

Миллионы внимательных глаз... Каждая программа делать одну задачу и делает это ХОРОШО ... ага сейчааззз

Теперь осталось дождаться пока wc починят.

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

в случае преждевременного завершения работы (падение, ^C или ещё чего) sed оставит оригинальный файл нетронутым, а ed превратит его в недоотредактированный мусор.

Вообще-то в ed изменения применяются только по команде w

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

а ed редактирует на месте

Что за ed? Гнутый таки создает:

$ readlink /proc/`pidof ed`/fd/3                                                                                                                                                 
/tmp/tmpfgFzySg (deleted)

Размер чуть меньше исходного, без \n (видимо строит внутренний индекс адресов перевода строк).

Из plan9 создает какой-то индексированный файл (~2.5 толще). Sam в 4 раза больше (может, о юникоде беспокоится сильно).

Тут скорее: sed - не подходит для интерактивного использования, а vi - не всегда для больших файлов. Хотя интересно было посмотреть: ed vs «vi -u /dev/null --noplugin» на ваших use case.

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

в случае преждевременного завершения работы (падение, ^C или ещё чего) sed оставит оригинальный файл нетронутым, а ed превратит его в недоотредактированный мусор.

Вообще-то в ed изменения применяются только по команде w

Ну и что?

Возьмём твой пример с раскомментрированием строки. Сказал ты ed-у, из какой строки надо удалить символ, дал ему команду сохранить изменения. ed нашёл нужную строку, начал двигать оставшуюся часть файла на один символ влево. И где-то посреди этого процесса завершился из-за ошибки/^C/etc.. Результат — в файле «дыра» в виде лишнего символа, т.к. часть символов уже на новых (правильных) местах, а часть осталась на старых.

В случае с sed-ом при преждевременном закрытии просто останется неудалённый временный файл. Неприятно, но по сравнению с испорченным исходным файлом это ерунда.

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

Сказал ты ed-у, из какой строки надо удалить символ, дал ему команду сохранить изменения. ed нашёл нужную строку, начал двигать оставшуюся часть файла на один символ влево. И где-то посреди этого процесса завершился из-за ошибки/^C/etc.. Результат — в файле «дыра» в виде лишнего символа, т.к. часть символов уже на новых (правильных) местах, а часть осталась на старых.

Довольно маловероятная история. А вообще, кому что.

А вообще-то у меня нет гигабайтных файлов, а ed я больше использую потому что он как-то проще чем всякие там vi, кроме того для тормозящего подключения (когда-нибудь пользовались ssh через GPRS?) он по идее должен быть куда быстрее других редакторов.

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

Да есть временные файлы, так что плюс ed-а может быть только в интерактивности; xenuis-у еще sv75 выше мягко намекнул, что, «на месте» - прохладная история.

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

Ну, вдруг у кого-то есть машина послабее, чем КР580ВМ80. Им-то и пригодится.

Для начала им там придется запустить что-то *nix-like.

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