处理文本工具sed及vim文本编辑工具
Sed:
sed是一种在线编辑器、行编辑器,一次处理一行内容。在处理时,把当前处理的行存储在临时缓冲区中,该缓冲区称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完毕后,把缓冲区的内容送到标准输出;然后紧接着处理下一行,重复完成相同的操作,直到文件末尾;sed处理的整个过程中,对象文件中的内容没有被改变,除非使用重定向来存储处理后的结果。sed主要用来自动编辑一个或多个文件,简化对文件的反复操作过程。
功能:数据的替换、删除、新增等,这里的数据可以是一些关键字,也可以是一些特定的行。
语法结构:
sed [OPTION]…{script}[input-file]…[actions]
-n:静默模式
-e:多点编辑
-f /PATH/TO/SCRIPT_FILE:从指定文件中读取脚本并运行
-r:支持扩展正则表达式
-i: 直接修改源文件
Sed的地址定界
#:表示数字,指定行
$:最后一行
#,#:从#行开始到#行
#,+#:从#行开始,到加#行
1~2:奇数行
2~2:偶数行
编辑命令:
d:删除模式空间匹配的行
p:显示模式空间中的内容
a \text:在行后面追加文本;支持使用\n 实现多行追加
i \text:在行前面插入文本;支持使用\n 实现多行插入
c \text:用text替换匹配到的行
w /path/to/somefile:保存模式匹配的行至指定文件
r /path/from/somefile:读取指定文件的文本至模式空间中匹配到的行后合并
=:为模式空间中的行打印行号
!: 模式空间中匹配行取反处理
s/regexp/replacement/:替换由regexp所匹配到的内容为replacement,对于替换有两个后选项:g:全局替换
i:不区分大小写
p:显示替换成功的行
高级编辑命令:
h:把模式空间中的内容覆盖至保持空间中
H:把模式空间中的内容追加至保持空间中
g:从保持空间取出数据覆盖至模式空间
G:从保持空间取出内容追加至模式空间
x: 把模式空间中的内容与保持空间中的内容进行互换
n: 读取匹配到的行的下一行至模式空间
N:追加匹配到的行的下一行至模式空间,追加在模式空间中原有内容的后面–
d: 删除模式空间中的行
D :删除多行模式空间中的首行
例 1. 在特定行号后插入一行
要在第25行以后插入一行新的内容xiaoming(插入内容将变成第26行),写法:
# sed -i '25axiaoming' aaa.txt
# sed -i '25a\xiaoming' aaa.txt 没有特殊字符时,加与不加转义符,效果都一样
要在第25行插入一行新的内容 /usr/local/php.ini,写法:
# sed -i '25a/usr/local/php.ini' aaa.txt 需要加入转义符
2. 彻底替换某一行内容
要把第3行的内容彻底替换为xiaoming*,写法:
# sed -i "3s/.*/xiaoming */" /etc/ppp/chap-secrets
vim编辑器:
打开文件 # vim [OPTION]… FILE…
+#: 打开文件后,直接让光标处于第# 行的行首
+/ PATTERN :打开文件后,直接让光标处于第一个被PATTERN 匹配到的行的行首
vim + file 直接打开file, 光标在 最后一行
vim -b file 二进制方式打开文件
vim -d file1 file2… 比较多个文件
vim -m file 只读打开文件
ex file 或 或 vim –e 直接进入ex 模式
如果该文件存在,文件被打开并显示内容
如果该文件不存在,当编辑后第一次存盘时创建它
vim :一个模式编辑器
击键行为是依赖于 vim的 的 的“模式”
三种主要模式:
命令模式(默认):移动光标,剪切/ 粘贴文本
插入(编辑)模式:修改文本
扩展命令模式 :保存,退出等
Esc键 退出当前模式
Esc键Esc键 总是返回到命令模式
模式转换
1. Esc键:从输入模式转换为编辑模式
2. 从编辑模式–>输入模式,可使用:
i:在光标所在处的前方转换为输入模式
a:在光标所在处的后方转换为输入模式
o:在光标所在处的下方新建一个空行并转换为输入模式
I:在光标所在行的行首输入
A:在光标所在行的行尾输入
O:在光标所在行的上方新建一个空白行
3. 从编辑模式–>扩展模式:直接在窗口输入冒号(:)即可在窗口的左下方显示冒号
4. 从扩展模式–>编辑模式:敲击Esc键
5. 锁定和解锁:CTRL+s,Ctrl+q
关闭文件
扩展模式:
:q 退出
:q! 强制退出,丢弃做出的修改
:wq 保存退出
:x 保存退出
命令模式
ZZ:保存退出
ZQ:不保存退出
扩展模式
按“: ”进入Ex 模式
创建一个命令提示符:, 处于底部的屏幕左侧
w 写(存)磁盘文件
wq 写入并退出
x 写入并退出(不推荐)
q 退出
q!不存盘退出,即使更改都将丢失
r filename 读文件内容到当前文件中
w filename 将当前文件内容写入另一个文件
命令模式的光标跳转
字符间跳转:h: 左 l: 右 j: 下 k: 上
#COMMAND :跳转由# 指定的个数的字符;
单词间跳转:
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
#COMMAND:由# 指定一次跳转的单词数
当前页跳转:
H:页首 M:页中间行 L:页底
行首行尾跳转:
^:跳转至行首的第一个非空白字符;
0:跳转至行首
$:跳转至行尾
行间移动:
#G:直接跳转至#行
G:最后一行
1G, gg:第一行
句间移动:
) :下一句 ( :上一句
段落间移动:
}:下一段 {:上一段
Ctrl+f:向文件尾部翻一屏
Ctrl+b:向文件首部翻一屏
Ctrl+d:向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
Vim的编辑命令
x:删除光标处的字符;
#x:删除光标处起始的# 个字符
xp:交换光标所在处的字符及其后面字符的位置
~: 转换大小写
r:替换光标所在处的字符
R:切换成REPLACE 模式
d:删除命令,可结合光标跳转字符,删除跳转范围内的字符
d$:删除到行尾
d^:删除到非空行首
d0:删除到行首
#COMMAND
dd:删除光标所在的行
#dd :多行删除
D:从当前光标位置一直删除到行尾,留空行,等同于d$
y: 复制,行为相似于d 命令
y$ y0 y^ ye yw yb同上
#COMMAND
Y :yy:复制行
#yy: 复制多行
p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面
c:修改后切换成插入模式
命令模式 –> 插入模式
w b e $ 0 ^
所谓修改就是先删除,再转换为输入模式
cc:删除当前行并输入新内容
C:删除当前光标到行尾,并切换成插入模式
原创文章,作者:Dadi,如若转载,请注明出处:http://www.178linux.com/32984
评论列表(1条)
文章整体架构清晰,层次分明,如果能理论结合实际会更好哦。