您的位置:首页 > 运维架构 > Linux

处理文本的工具sed,vim 编辑器的使用   Linux版

2016-08-10 14:41 190 查看
处理文本的工具sedStream EDitor 行编辑器sed一次处理一行的内容,处理时,将当前处理的行存储在临时缓冲区,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,将缓冲区的内容送往屏幕,接着处理下一行不断重复,直到末尾。 一次处理一行文件--->内存空间--->屏幕 模式空间
文件--->内存空间--->屏幕 | 保持空间
sed -n:不输出模式空间内容的自动打印 -e:多点编辑 -f:/PATH/TO/SCRIPT_FILE:从指定文件中读取编辑文本 -r:支持使用扩展正则表达式 -i:原处编辑 -i.bak 直接使用容易删去文件,使用的时候在后面加.bak 留下一个备份 sed -i.bak '10d' f1
script:地址命令地址定界: (1)不给地址:对全文进行处理 (2)单地址: #:指定的行 /pattern/:被此处模式所能够匹配到的每一行 (3)地址范围: #,# #,+# /pat1/,/pat2/ sed -n '/^root/,/^s/p' #,/pat1/ (4)~:步进 1~2 奇数行 2~2 偶数行

sed -n '2p' f1将第二行显示出来

编辑命令: d:删除模式空间匹配的行 p:显示模式空间中的内容 a \text:在行后面追加文本:支持使用\n实现多行追加 i \text:在行前面插入文本:支持使用\n实行多行插入 c \text:替换行为单行或多行文本 w /path/to/somefile:保存模式匹配的行至指定文件 r /path/from/somefile:读出指定文件的文本至模式空间中匹配到的行后 =:为模式空间中的行打印行号 !:模式空间中匹配行取反处理
s///: 查找替换,支持使用其它分隔符,s@@@,s###替换标记: g:行内全局替换 p:显示替换成功的行 w /PATH/TO/SOMEFILE:将替换成功的行保存至文件中nl =cat -n 显示行号 sed 's@^[^#]@#&@' /etc/fstab

echo /etc/sysconfig/ |sed -r 's#(/.*/)[^/]+?#\1#' sed 's#^.*\<##' sed -r 's#[^/]+/?##'





sed工具高级编辑命令: h:把模式空间中的内容覆盖至保持空间中 H:把模式空间中的内容追加至保持空间中 g:从保持空间取出数据覆盖至模式空间 G:从保持空间取出内容追加至模式空间 x:把模式空间中的内容与保持空间中的内容进行互换 n:读取匹配到的行的下一行覆盖至模式空间 N:追加匹配到的行的下一行至模式空间 d:删除模式空间中的行 D:删除当前模式空间开端至\n的内容(不在传至输出),放弃之后的命令,但是对剩余模式空间重新执行sed

vim 编辑器

只在/etc/目录下的文件,用vim才显示格式高亮颜色。


+#:+数字:直接打开跳到数字行 +/PATTERN: 打开文件之后直接跳到关键词 +空格:打开直接跳最后一行 -d:同时打开多个文件,并能对比出文件之间的不同-m:打开为只读方式,不能修改-e:直接进入ex模式

vim三种主要模式 命令模式(默认):主要功能是查看文件内容 插入(编辑)模式:修改文本。 扩展命令模式:保存,退出等。 hjkl 上下左右移动
插入(编辑)模式 i:在原本光标的地方修改 I:自动去到光标所在的行开头 a:跳到光标所在的位置的后一位置 A:直接跳到光标所在的行尾 o:在当前光标所在的行下方打开一个新行 O:在当前光标所在的行的上分打开一个新行

模式转换插入模式 ---->命令模式 ESC命令模式 ---->扩展模式 :扩展模式 ---->命令模式 ESC锁定和解锁:Ctrl+s,屏幕不显示,但是实际能够输入,解锁可以显示 Ctrl+q

关闭文件扩展模式: :q 退出 :q! 强制退出,丢弃做出的修改 :wq 保存退出 :x 保存退出 按“:”进入Ex模式

命令模式 ZZ:保存退出 ZQ:不保存退出

字符间跳转:h: 左 l:右 j:下 k:上
单词间跳转: w:下一个单词的词首 e:当前或下一单词的词尾 b:当前或前一个单词的词首 #COMMMAND:跳转由#指定的个数的字符当前也跳转: H:页首 M:页中间行 L:页底
行首行尾跳转: ^:跳转至行首的第一个非空白字符: 0:跳转至行首 $:跳转至行尾
行间动: #G,扩展模式:#:跳转至由#指定行 G:最后一行 1G,gg:第一行
句间移动: ):下一句 (:上一句
段落间移动: }:下一段 {:上一段

命令模式翻屏操作Ctrl+f:向文件尾部翻一屏Ctrl+b:向文件首部翻一屏Ctrl+d:向文件尾部翻半屏Ctrl+u:向文件首部翻半屏

字符编辑: x:删除光标处的字符 #x:删除光标处其实的#个字符 xp:交换光标所在处的字符及后面字符的位置 ~:转换大小写替换命令: r:替换光标所在处的字符 R:切换成REPLACE模式

删除命令:d d:删除命令,可以结合光标跳转字符,实现范围删除 d$:删除到行尾 d^:删除到非空行首 d0:删除到行首 dd:删除到光标所在的行 #dd:多行删除 D:从当前光标位置一直删除到行尾,留空行,等同于d$

拷贝命令:y y:复制,行为相似于d命令 y$:复制到行尾 y0:复制到行首 y^:复制到非空行首 yy:复制行 #yy:复制多行 y:复制整行
粘贴命令: p p:粘贴当前光标所在后面 P:粘贴在当前光标所在的前面
改变命令:c
命令模式100 i wang [ESC] 粘贴“wang”100次y 复制,d删除,gU,变大写,gu变小写

地址定界:#:具体第#行,例如2表示第二行 #,#:从左侧#表示行起始,到右侧#表示行结尾 #,+#:从左侧#表示行起始,加上右边→_→#表示的行数 2,+3 表示2到5行 .:表示当前行 $:最后一行 .,$-1 当前行到倒数第二行 %:全文,想当于1,$ 地址定界 扩展模式: /at1/,/pat2/ 从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束 #,/pat/ /pat/,$

撤销更改:u #u撤销之前多次更改 重做按:Ctrl+r重复前一个操作:.n. 复制n次前一次的操作。U撤销光标所在行的所有更改

vim的寄存器"a yy"a p"b yy
有26个命名寄存器和1个无名寄存器,常存放在不同的剪贴板内容,可以不同回话间共享。用a,b,...,z表示,用"寄存器表示,放在数字和命令之间 如:3"tyy表示复制3行到t寄存器中 "tp 表示将t寄存器内容粘贴未指定,将使用无名寄存器有10个数字寄存器,用0,1,...9表示,0存放最近复制内容,1存放最近删除内容。当新的文本变更和删除时,1转存到2,2存转到3,以此类推。数字寄存器不用在不同回话间共享。
编辑二进制文件以二进制方式打开文件 vim -b binaryfiy 扩展命令模式下,利用xxd命令转换为可读的十六进制 :%!xxd 扩展命令模式下,利用xxd命令转换回二进制 :%!xxd


可视化模式 v面向字符 V面向行 ctrl -v 面向块
可视化键可用于与移动键结合使用: w,),},箭头等突出显示的文字可以被删除,复制,变更,过滤,搜索,替换等。

多文件模式vim f1,f2,f3... :next 下一个 :prev 前一个 :first 第一个 :last 最后一个 :wall 保存所有 :qall 退出所有 :wqall 保存退出所有
多文件分隔 vim -o | -O f1 f2 -o:水平分隔 -O:垂直分隔 在窗口间切换:Ctrl+w 可以通过Ctrl+w 可以切换都其他分割窗口 单文件窗口分隔: 水平分割:Ctrl+w,s 垂直分割:Ctrl+w,v 取消相邻的窗口:Ctrl+w,q 取消全部窗口:Ctrl+w,o 退出:wqall




vim 配置文件: 全局:/etc/vimrc 个人:~/.vimrc 扩展模式:当前vim进程有效 (1)行号 显示:set number,简写为:set nu 取消显示:set nonumber,简写:set nonu (2)括号成对匹配 匹配:set showmatch,简写为set sm 取消:set nosm (3)自动缩进 启用:set ai 禁用:set noai (4)高亮搜索 启用:set hlsearch 禁用:set nohlsearch (5)语法高亮 启用:syntax on 禁用:syntax off (6)忽略字符的大小写 启用:set ic 不忽略:set noic (7)文件格式 启用:fileformat=unix (Linux) 不忽略:fileformat=dos (windows) (8)设置文本宽度 :set textwidth=65(vim only)宽度 :set wrapmargin=15
vim/vi 内置帮助 :help :help topic
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编辑器 vim linxu