sed工具:
用法:
sed [option]… 'script' inputfile…
常用选项:
-n:不输出模式空间内容的自动打印,只输出处理行的结果
-e: 多点编辑
-f : / PATH/TO/SCRIPT_FILE : 从指定文件中读取编辑脚本
-r: 支持使用扩展正则表达式
-i: 原处编辑,可以直接修改文件 ; -i.bak:备份文件再修改,安全
script: ' 地址,命令'
地址界定:
*如果没有明确表明地址,则对全文进行处理
*单地址:
#:指定的行 /pattern/被此模式所能匹配到的每一行进行处理
*地址范围:
#,#:表示第#行到第#行
#,+#:表示第#行,和之后的#行
/pat1/,/pat2/:从匹配到的/pat1/行开始,到/pat2/的行 之间的行 #,/pat1/:从第#行开始,到匹配到/pat1/的行 之间的行
* ~:步进
1~2:奇数行
2~2:偶数行
编辑命令:
d:删除模式空间匹配的行
p:显示模式空间中的内容
显示第三行, -n表示不显示默认输出的结果,只显示第3行的匹配结果
a \text:在行后面追加文本;支持使用\n 实现多行追加
i \text:在行前面插入文本;支持使用\n 实现多行插入
c \text:替换行为单行或多行文本
w /path/to/somefile: 保存模式匹配的行至指定文件
r /path/from/somefile:读取指定文件的文本至模式空间中匹配到的行后
=: 为模式空间中的行打印行号
!:模式空间中匹配结果取反处理
如果不加!:f2文件中1到3行加上行号 加上!结果取反,1到3行不加,其他行加
s/// :查找替换, 支持使用其它分隔符,s@@@ ,s###
替换标记:
g: 行内全局替换
p: 显示替换成功的行
w /PATH/TO/SOMEFILE :将替换成功的行保存至文件中
这里没有加g,所以是匹配到的有good的行的第一个字符进行替换,加上g的话,就是行内所有的匹配到的字符全部替换:
[root@localhost ~]# cat f1 good good good goodgood goood [root@localhost ~]# sed "s/good/god/" f1 god good good godgood goood [root@localhost ~]# sed -n "s/good/god/gp" f1 god god god godgod
只显示替换成功的行
&符号表示前面的搜索结果,比如在这里就表示的是,把root替换成rootsuperman
&也可以放在后面:/root/superman&/表示把root替换成supermanroot
保持空间: 可暂时存放数据的空间
高级编辑命令:
h: 把模式空间中的内容覆盖至保持空间中
H:把模式空间中的内容追加至保持空间中
g: 从保持空间取出数据覆盖至模式空间
G:从保持空间取出内容追加至模式空间
x: 把模式空间中的内容与保持空间中的内容进行互换
n: 读取匹配到的行的下一行 覆盖 至模式空间
N:追加匹配到的行的下一行至模式空间
d: 删除模式空间中的行
D:删除当前模式空间开端至\n的内容(不在传至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed
vi文本编辑器:
简介:
vi:Visual Interface,文本编辑器
文本编辑种类:
行编辑器:sed
全屏编辑器:nano,vi
vim – Vi Improved是vi的加强版
其他编辑器:
gedit 一个简单的图形编辑器
gvim 一个vim编辑器的图形版本
打开文件:
命令格式vim [OPTION]… FILE…
+#: 打开文件后,直接让光标处于第# 行的行首
vi +2 f2
+/ PATTERN :打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首
vi +/UUID f2
vim + file 直接打开file, 光标在最后一行
vi + f2
vim –b file 二进制方式打开文件
vim –d file1 file2… 比较多个文件
vi -d f1 f11
vim -m file 只读打开文件
ex file 或 或 vim –e 直接进入ex模式 如果该文件存在,文件被打开并显示内容;如果该文件不存在,当编辑后第一次存盘时创建它
vim的三种主要模式:
命令模式(默认):移动光标,剪切、粘贴文本 ,用来查看文件
插入(编辑)模式:修改文本
扩展命令模式:保存,退出等
Esc键:退出当前模式 Esc键 Esc键 总是返回到命令模式
由命令模式–>插入模式:
i: insert, 在光标所在处输入
I:在当前光标所在行的行首输入
a: append, 在光标所在处后面输入
A:在当前光标所在行的行尾输入
o: 在当前光标所在行的下方打开一个新行
O:在当前光标所在行的上方打开一个新行
模式之间的转换:
插入模式 —-> 命令模式 按ESC键
命令模式 —-> 扩展模式 直接输入: :wq存盘退出; :q没改文件的情况下退出; :q!更改文件的情况下强行退出,但不保存文件; :x存盘退出=:wq
扩展模式 —-> 命令模式 按ESC键
锁定和解锁:CTRL+s,Ctrl+q
关闭文件:
扩展模式: 输入 :wq存盘退出; :q没改文件的情况下退出; :q!更改文件的情况下强行退出,但不保存文件; :x存盘退出=:wq
命令模式: ZZ:保存退出 ZQ:不保存退出
扩展模式:
按“:” 创建一个命令提示符:,处于底部的屏幕左侧,进入Ex模式
命令:
w写(存)磁盘文件,可以临时保存,亦可以保存在别的文件
(w filename) 然后继续编写
wq写入并推出=x
r filename 读文件内容到当前文件中
w filename 将当前文件内容写入另一个文件,临时保存
:!command,可以执行命令,执行完,回车键返回文件编辑
:r!command 直接读取命令执行结果
命令模式的光标跳转:
字符间跳转:
h:左 l:右 j:下 k:上
#COMMAND :跳转由#指定的个数的字符;例如:10h–向左跳转10个字符
单词间跳转:
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
#COMMAND:由#指定一次跳转的单词数
当前页跳转:
H :页首 M:页中间行 L:页底
行首行尾跳转:
^: 跳转至行首的第一个非空白字符;
0: 跳转至行首
$: 跳转至行尾
行间移动:
#G(输入行数+G进行跳转)、扩展模式:# 跳转至由#指定行
G:最后一行 1G, gg: 第一行
句间移动:
):下一句 (:上一句 默认以.结束是一句话
段落间移动:
}: 下一段 {:上一段
命令模式翻屏操作:
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
命令模式操作:
字符编辑:
x:直接删除光标处的字符;
#x:删除从光标出开始的#个字符
xp:交换光标所在处的字符及其后面字符的位 是x,p的组合,
x是剪切,p粘贴
~:转换大小写
替换命令(r,replace)
r:替换光标所在处的字符,只能一个
R:切换成REPLACE模式,输入任意字符替代光标处字符,一直替换,按esc键退出REPLACE模式
删除命令:
d: 删除命令,可结合光标跳转字符,实现范围删除;
d$: 删除到行尾
d^: 删除 到非空行首
d0: 删除到行首
dw:从光标处删除到光标所在单词词尾
de:从光标处删除到所在单词词尾
db:从光标处删除到光标所在单词词首
dd: 删除光标所在的行
#dd :多行删除
D:从当前光标位置一直 删除到行尾,留空行,等同于d$
复制命令(y, yank):想要粘贴 把光标跳转至指定位置,按p,在光标之后粘贴,按P,在光标之前粘贴(粘贴命令(p, paste):
p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面)
y:复制,行为相似于d命令
y$:从光标处到行尾复制
y0:从光标处到行首复制
y^:从光标处到行首非空字符复制
ye:从光标处到单词词尾复制
yw:从光标处到单词词尾复制
yb:从光标处到单词词首复制
yy:复制行
#yy:复制多行
Y:复制整行
命令模式 –> 插入模式 c:修改后切换成插入模式
c$:删除从光标处到行尾的字符,然后自动切换至插入模式
c^:删除从光标处到行首的非空字符,进入插入模式
c0:删除从光标处到行首的所有字符,进入插入模式
cb:删除从光标处到词首的字符,进入插入模式
ce:删除从光标处到词尾的字符,进入插入模式
cw:删除从光标处到词尾的字符,进入插入模式
cc :删除当前行并输入新内容
#cc:从光标之后的#行删除并输入新内容
C:删除当前光标到行尾,并且换成插入模式
100iquan[Esc] 粘贴“quan”100次
Command:
y复制、d删除、gU变大写、gu变小写
命令将的组合: 0y$:从行首到行尾最后一个字符进行拷贝
ye:从当前位置拷贝光标所在单词的最后一个字符
扩展模式下的地址界定:
#:从第#开始
#,#: 从第#行到右边的第#行
#,+#: 从第#行开始到第#+#行结束 如:2,+3 表示2到5行
.: 当前行 $: 最后一行 如:.,$-1 当前行到倒数第二行
%:全文, 相当于1,$
/pat1/,/pat2/:从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
#,/pat/:第#行到第一次被pat匹配到的行
/pat/,$:从第一次被pat匹配到的行到最后一行
使用方式:后跟一个编辑命令
d:删除
y:复制
w file: 将范围内的行另存至指定文件中
r file :在指定位置插入指定文件中的所有内容
从第一个行首是任意字符的有by的行首到第一个被匹配到的行首是任意字符的有man的行尾进行复制 到指定位置,在命令模式下按p键粘贴,如下图:
扩展模式下的查找:
/PATTERN :从当前光标所在处向文件尾部查找查找关键词
?PATTERN :从当前光标所在处向文件首部查找
n:与命令同方向跳到下一个关键词
N:与命令反向跳到下一个关键词
扩展模式模式下的查找并替换:
s:在扩展模式下完成查找、替换
格式:s/($、@、#)要查找的内容/替换的内容/修饰符
其中修饰符有:
i:忽略大小写
g:全局替换; 因为默认模式下,是每行只替换第一个
gc:全局替换,每次替换前询问
命令的意思:全文搜索/sbin/nologin,并用/bin/bash进行全局替换
替换完成
命令模式 :撤销修改:
u:撤销最近的更改
#u:撤销之前的#次更改
U:撤消光标落在这行后所有此行的更改
:按Ctrl -r重做最后的“撤消”更改
.:重复前一个操作
n.:重复起一个操作n
vim寄存器 只能一个人用
用a ,b,…,z 表示, 用“寄存器表示,放在数字和命令之间
如:3"tyy 表示复制3行到t寄存器中 执行完3“tyy后文件下方会出现:3 lines yanked 字样,表示已经复制到t寄存器中完毕
"tp 表示将t寄存器内容粘贴 把光标移动到指定位置,执行“tp即可粘贴刚才复制的t寄存器中的内容
如果未指定寄存器名字,将使用无命名寄存器
有10 个数字寄存器,用0 ,1 ,… ,9 表示,0 存放最近复制内容,1 存放最近删除内容。当新的文本变更和删除时,1 转存到2 ,2 转存到3 ,以此类推。数字寄存器不能在不同会话间共享。
可视化模式:
允许选择的文本块:
v面向字符
V面向行
ctrl-v 面向块
相当于选中范围
可视化键可用于与移动键结合使用:w,),},箭头等
突出显示的文字可以被删除,复制,变更,过滤,搜索、替换等
多文件模式:
vim FILE1 FILE2 FILE3 … 同一时间只能看到一个文件
扩展模式下输入:
:next 下一个
:prev 前一个
:first 第一个
:last 最后一个
:wall 保存所有
:qall 退出所有
:wqall 保存并退出所有
使用多个窗口:
多文件分割 vim -o|-O FILE1 FILE2 …
-o: 水平分割 -O: 垂直分割
在窗口间切换: Ctrl+w,方向键 上下左右跳转
单文件窗口分割:
Ctrl+w,s:水平分割
Ctrl+w,v:垂直分割
ctrl+w,q:取消相邻窗口
ctrl+w,o: 取消全部窗口
: wqall 退出
定制vim的工作特性:
配置文件:永久有效,修改配置文件
全局:/etc/vimrc
个人:~/.vimrc
在扩展模式下定制特性,只对当前进程有效
行号:
显示:set number, 简写为set nu
取消显示:set nonumber, 简写为set nonu
自动缩进:
启用:set ai
禁用:set noai
高亮搜索:
启用:set hlsearch
禁用:set nohlsearch
语法高亮:
启用:syntax on
禁用:syntax off
忽略字符的大小写:
启用:set ic
不忽略:set noic
文件格式
启用:set fileformat=unix
不忽略:set fileformat=dos
(8) 设置文本宽度 标准长度:一行80字符
:set textwidth=65 (vim only,vi不支持)距离左边65个字符换行
:set wrapmargin=15距离右边15个字符换行
如果想要了解更多,请在vi中扩展模式下敲help
原创文章,作者:旧城以西,如若转载,请注明出处:http://www.178linux.com/31915