Table of Contents

Текстовые редакторы ed, sed, vi, vim

Исходные файлы

$ cp /etc/passwd .

$ cp /etc/fstab .

$ cp /etc/ssh/sshd_config .

Редактор ed

http://ru.wikipedia.org/wiki/Ed

http://khpi-iip.mipk.kharkiv.edu/library/extent/os/usref/gl06.html

Начало редактирования

$ ed passwd

Команды просмотра текста

Команды навигации по тексту

Команды редактирования текста

Команды окончания редактирования

Потоковый редактор sed

Формат команды

sed команды_редактирования [имя_файла]

$ sed '' passwd
$ sed -n '' passwd

Команда "p" - печать текста

$ sed -n '1p' /etc/passwd

$ sed -n -e '1p' -e '20,$p' /etc/passwd

Команда "a" вставка после, "i перед строкой и размещение команд редактирования в файле

$ cp /etc/passwd .

$ sed '1i\
Name:Pass:Uid:Gid:...
' passwd

$ sed '$a\
Name:Pass:Uid:Gid:...
' passwd

$ cat ex1.sed
$a\
Name:Pass:Uid:Gid:...
$ sed -f ex1.sed passwd

Команда редактирования "c" - замена строк и использование шаблона для выбора редактируемых строк

$ cp /etc/ssh/ssh_config .

$ sed '/^#/c\
# COMMENT
' ssh_config

Команда редактирования "d" - удаление строк, использование логических операторов и расширенных регулярных выражений

$ sed '10,$d' passwd

$ sed -e '/^$/d' -e '/^#/d' sshd_config

$ sed -e '/^$\|^#/d' sshd_config

$ sed -E -e '/^$|^#/d' sshd_config

Команда редактирования "s" замена элементов текста, использование классов символов и переменных в шаблонах

Linux/FreeBSD

$ df -h | sed -re 's/ {1,}/ /g' # see tr

$ sed 's/bin\/bash/bin\/sh/g' passwd

$ sed 's|bin/csh|bin/sh|g' passwd

FreeBSD

$ fetch http://garmoshki.ru/schools/gegart/gegart.htm

$ grep sound gegart.htm | sed -E 's/.*(sound.*mp3).*/fetch http:\/\/garmoshki.ru\/schools\/gegart\/\1/'

Linux

$ wget http://garmoshki.ru/schools/gegart/gegart.htm

$ grep sound gegart.htm | sed -E 's/.*(sound.*mp3).*/wget http:\/\/garmoshki.ru\/schools\/gegart\/\1/'

Аргумент "i" - непосредственное редактирование файла

$ sed -i.bak -e '/^$\|^#/d' ssh_config

$ sed -i -e '/swap/s/^/#/' fstab

Редактор vi, vim

Установка в FreeBSD

# pkg install vim-lite

Настройка

$ cat ~/.vimrc

debian# cat /usr/share/vim/vim*/defaults.vim
...
"set incsearch
set mouse-=a
syntax on
"filetype plugin indent on

Переключение режимов

ESC	- переход в режим навигации и редактирования
ESC:	- переход в режим ed
i или o - переход в режим вставки текста

Команды режима навигации и редактирования

Навигация по тексту

h			- влево
l			- вправо
k			- вверх
j			- вниз
<Shift>-^		- на начало строки
<Shift>-$	- на конец строки
<Ctrl>-B	- на страницу вверх
<Ctrl>-F	- на страницу вниз
g		- на начало текста
G		- на конец текста
<Ctrl>-G	- вывести отчет о редактируемом тексте

Поиск текста

/регулярное_выражение	- поиск по тексту вниз
/\cрегулярное_выражение	- поиск по тексту вниз без учета регистра
n			- повтор поиска вниз
?регулярное_выражение	- поиск по тексту вверх
N			- повтор поиска вверх

Редактирование текста

i	- ввод текста с текущей позиции
o	- ввод текста с новой строки
J	- склеить строки

x	- удалить текст (DEL)
X	- удалить текст (BACKSPACE)

yy	- копировать строку в буфер
dd	- вырезать строку в буфер
p	- вставить строку из буфера
u	- отменить последнее действие

Команды режима ed

w	- запись файла
q	- выход из редактора
w!	- запись файла с без установленного бита записи
q!	- выход из редактора без сохранения
номер_строки	        - перейти на указанную строку
1,.d			- удалить строки с первой до текущей
g/шаблон/d		- удалить строки, содержащие шаблон во всем тексте
1,20g/шаблон/d	        - удалить строки, содержащие шаблон c 1 по 20 строку
20,$s/шаблон/замена/	- произвести замены в тексте с 20 строки до конца
%s/шаблон/замена/	- произвести замены в тексте во всем файле. Пример: %s/^/shut\rint /
noh                     - очистить подсветку поиска

Редактирование файлов для Winodws

$ vim -c 'set ff=dos' cko-asterisk.ovpn

Дополнительные материалы