运维基础之 vim和sed

一、文本编辑器VIM

三种主要模式:
命令(Normal)模式:默认模式,移动光标,剪切/粘贴文本
插入(Insert)或编辑模式: 修改文本
扩展命令(extended command )模式: 保存,退出等

命令模式 --> 插入模式
i: insert, 在光标所在处输入
I:在当前光标所在行的行首输入
a: append, 在光标所在处后面输入
A:在当前光标所在行的行尾输入
o: 在当前光标所在行的下方打开一个新行
O:在当前光标所在行的上方打开一个新行

删除命令:
d: 删除命令,可结合光标跳转字符,实现范围删除
d$: 删除到行尾
d^:删除到非空行首
d0:删除到行首
dw:
de:
db:
#COMMAND

复制命令(y, yank):
y: 复制,行为相似于d命令
y$
y0
y^
ye
yw
yb
#COMMAND

在命令模式执行:r!hostname在文本插入了执行的命令的显示结果
运维基础之 vim和sed

当前页跳转:
H:页首 M:页中间行 L:页底
单词间跳转:
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
COMMAND:由#指定一次跳转的单词数
行首行尾跳转:
^: 跳转至行首的第一个非空白字符
0: 跳转至行首
$: 跳转至行尾
行间移动:
G、扩展模式:# :跳转至由#指定行
G:最后一行
1G, gg: 第一行
查找
/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向

运维基础之 vim和sed删除以#开头的行
:g/^#/d 或者 %s/^#.*//
运维基础之 vim和sed取出网卡的地址信息
:2s/^.*inet \([0-9.]\+\)/\1/

允许选择的文本块
v 面向字符
V 面向行
ctrl-v 面向块

多文件分割
vim -o|-O FILE1 FILE2 …
-o: 水平分割
-O: 垂直分割
在窗口间切换:Ctrl+w, Arrow
单文件窗口分割:
Ctrl+w,s: split, 水平分割
Ctrl+w,v: vertical, 垂直分割
ctrl+w,q:取消相邻窗口
ctrl+w,o:取消全部窗口
:wqall 退出

自动缩进
启用:set ai
禁用:set noai
~换大小写

linux系统文本转到windows文本需要转换文本格式
文件格式
启用windows格式:set fileformat=dos
启用unix格式:set fileformat=unix
简写: set ff=dos|unix

二、文本处理工具sed

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。如果没有使诸如‘D’的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出
运维基础之 vim和sed替换出ip地址
cat test3.txt |sed -nr '2s#^.*inet ([0-9.]+) .*$#\1#p'