Инструменты пользователя

Инструменты сайта


текстовые_редакторы_ed_sed_vi_vim

Содержание

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

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

$ cp /etc/passwd .

$ cp /etc/fstab .

$ cp /etc/ssh/sshd_config .

Редактор ed

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

$ ed passwd

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

  • p
  • pn
  • 5p
  • 3,6p
  • 1,$p
  • %p
  • %pn

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

  • 1
  • $
  • /root
  • /

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

  • 4d
  • u
  • 1,3d
  • g/sh$/d
  • 34,$g/^user/d
  • 1i
  • $a
  • 5,7c
  • .
  • s/bin\/sh/bin\/bash/
  • 30,33s/bin\/sh/bin\/bash/
  • %s/bin\/sh/bin\/bash/

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

  • w
  • q

Потоковый редактор 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.bak -e '/swap/s/^/#/' fstab

Редактор vi, vim

Установка в FreeBSD

# pkg install vim-lite

может понадобиться для корректной работы:

# cat /usr/local/etc/vim/vimrc

$ cat ~/.vimrc
...
"set incsearch
...
set mouse-=a
...
"  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/шаблон/замена/	- произвести замены в тексте во всем файле

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

текстовые_редакторы_ed_sed_vi_vim.txt · Последние изменения: 2018/10/24 09:34 — val