LINUX.ORG.RU

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

 , ,


0

1

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

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

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

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

★★★★★

Проверено: Shaman007 ()
Последнее исправление: Klymedy (всего исправлений: 6)
Ответ на: комментарий от AX

ну, существенный, это точно.

record ★★★★★
() автор топика

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

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

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

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

cruxish ★★★★
()

Ну, теперь венда обречена.

Oleaster ★★★
()

ох, его еще и разрабатывают. я-то думал, что туда лет 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
()

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

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

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

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

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

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

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

Вот ты смеёшся, а я им иногда пользуюсь. ☺

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

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

Какие это?

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

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

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

Xenius ★★★★★
()
Ответ на: комментарий от 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 ★★★★★
()
Ответ на: комментарий от sv75

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

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

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

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

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

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

У меня по двойному ^D выходит.

anonymous
()

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

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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.