Как обновить страницу справочника в режиме страницы справочника при редактировании roff источника:
;;;; MAN / man
(defvar *curr-man* "~/mansv/ls.1")
(defun edman ()
"edit the current work-in-progress man page"
(interactive)
(find-file *curr-man*) )
(defun upman () ; edit: better version of this function below
"update the current work-in-progress man page"
(interactive)
(buffer-menu)
(revert-buffer)
(with-temp-buffer
(progn
(insert-buffer-substring "*Buffer List*")
(beginning-of-buffer)
(let ((man-buffer (format "*Man %s*" *curr-man*)))
(if (word-search-forward man-buffer (point-max) t) ; t = nil on fail
(kill-buffer man-buffer) ))
(man *curr-man*)
(edman)
(kill-buffer "*Buffer List*") )))
Править
Эта версия upman
надо надеяться, более стабильно. Отметьте введение нового глобального.
(defun upman ()
"update the current work-in-progress man page"
(interactive)
(if (get-buffer *curr-man-file*) (save-buffer))
(let ((man-buffer (format "*Man %s*" *curr-man*)))
(if (get-buffer man-buffer) (kill-buffer man-buffer))
(man *curr-man*)
(edman) ))
Да, используйте tr
вместо этого:
tr 'a' 'b' < file.txt > output.txt
sed
соглашения в строках так огромная строка вызовут его проблемы. Я ожидаю, что это объявляет, что переменная внутренне остается на линии, и Ваш вход превышает максимальный размер, выделенный той переменной.
tr
с другой стороны, соглашения с символами и должны смочь обработать произвольно длинные линии правильно.
Исторические версии sed и awk имели проблемы памяти, они были главным образом зафиксированы в более поздних версиях, но одни из классических случаев этой проблемы поразили Larry Wall довольно трудно. его ответ должен был записать новый язык программирования - без пределов памяти кроме аппаратных средств. Он назвал это жемчугом. Ваша определенная проблема может быть решена проще, но общее эмпирическое правило, которое я использую, - когда sed не будет использовать жемчуг.
Править: запросом пример:
perl -pe "s/a/b/g" < one-line-250-mb.txt
или для меньшего количества использования памяти:
perl -e 'BEGIN{$/=\32768}' -pe "s/a/b/g" < one-line-250-mb.txt
sed -e "s/a/z/g" b.txt > c.txt
без любых проблем. Используя sed (GNU sed) 4.2.2. – slm♦ 19.12.2013, 06:24sed
версия, угадайте, что она зависит от реализации или аппаратных средств. – terdon♦ 19.12.2013, 13:12sed
. – slm♦ 19.12.2013, 14:24