vim的末行模式讲解

末行模式重点讲解(这是学好sed的基础)
1)地址定界
:start_pos[,end_pos]
#: 特定的第#行,例如5 为第五行
.: 当前行
$:最后一行
#,#:指定行范围,左侧为起始行
#,#+:指定行范围,右侧为左侧行的偏移量 ,例如:3,+7
%:全文
/pattern/:第一次被模式所匹配到的行

2:可实现编辑操作 ,同编辑命令一同使用
d:表示直接删除,要求直接跟在地址定界符号的后面, 例如::.,$d 表示当前行到最后一行删除。
y:用来复制地址定界匹配到的行
c:用来修改地址定界匹配到的行
w /path/to/file :将范围内的文本保存至文件中
r /path/to/file:将指定的文件的文本插入指定位置

3:查找
/pattern:查找模式匹配到的所有字符串,向下查找, 然后在键盘上按n键会继续向下匹配
?pattern: 查找模式匹配到的所有字符串,向上查找,然后在键盘上按n键会继续向上匹配

查找并替换(极其重要)
(1)格式:地址定界符s/要查找的内容/替换为的内容/修饰符
要查找的内容:可以使用正则表达式
替换为的内容:不能使用正则表达式,但是可以引用
如果使用了分组,也就是在要查找的内容中使用了( )话,可以使用后向引用, \1表示引用第一个括号匹配的内容, \2表示第二个括号匹配的内容, \3表示第三个括号匹配的内容也可以直接引用查找模式匹配到的整个文本,直接使用匹配模式的全部文本:用&符号引用整个模式匹配到的文本

(2)修饰符
i:忽略大小写
g:全局替换,也就是如果不加g的话,那么只是一行匹配一个,如果第二个被匹配了也不会被替换,如果加了g,那么一行中无论匹配到多少个都会被替换

(3)可把分隔符替换为非常用的字符
例如:[email protected]@@
s###

练习
1 . 复制/etc/grub2.cfg文件至/tmp目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首的空白字符
:%s#^[[:space:]]\+##g       \+:匹配其前面的字符一次或多次,即其前面的字符要出现至少一次    %:全文

2 :复制/etc/rc.d/init.d/functions文件至/tmp目录中,用查找替换命令为/tmp/functions文件的每一个空白字符开头的行的首行加上#
%s#^[[:space:]]#\#&#g

3 . 为/tmp/grub2.cfg文件的前三行的行首加上#号
1,3s#^.#\#&#        .: 当前行          1,3地址定界      1,3s/^/\#/也可以
4 . 将/etc/yum.repos.d/CentOS-Base.repo文件中所有的enabled=0替换为ennabled=1,所有的gpgcheck=0替换为gpgcheck=1
%s#\(enabled\|gpgcheck\)=0#\1=1#g

时间: 2024-12-21 09:30:22

vim的末行模式讲解的相关文章

马哥2016全新Linux+Python高端运维班-Linux vim 末行模式,sed命令,基本bash脚本

本周作业内容: 1.复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#:%[email protected]^[[:space:]]\[email protected]#&@g384 substitutions on 384 lines#vim末行模式下%:表示全文相当于1,$s: 在末行模式下完成查找替换操作    s/要查找的内容/替换为的内容/修饰符    要查找的内容:可使用模式        替换

vim末行模式

(1) 地址定界 :start_pos[,end_pos] #:特定的第#行,例如5即第5行: .:当前行: $:最后一行: #,#:指定行范围,左侧为起始行,右侧为结束行: #,+#:指定行范围,左侧为超始行绝对编号,右侧为相对左侧行号的偏移量:例如:3,+7 .,$-1 1,$ %:全文 /pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行: /first/,$ /pat1/,/pat2/:从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之

vim末行模式与sed命令

一.在vim中进入末行模式进行查找和替换: 在编辑模式中按/或?进行模式查找 格式:/pattern 可以使用N或n查找上一个或下一个 末行命令中的s命令,是进行替换的命令,先查找再根据模式进行替换 格式: :[address]s/PATTERN/STRING/CONTROL 斜线的分隔符可以用任意字符 [address]:地址定界符 1.如果省略,则表示光标所在行 2.# 该数字所代表的行号的一行. 3.$ 当前文档的最后一行:$-1,倒数第二行 4.m,n:m和n都表示数字,其含义为从第m行

sed命令及vim的末行命令

sed:StreamEDitor,流编辑器,以行为单位对一个或多个文件进行编辑处理:每一次sed都会处理给定文件中的一行内容. 在sed处理文本时,将正在处理的当前行存储到临时的缓冲区中,称为"模式空间":用当前行去匹配给定的PATTERN,如果能匹配,则使用command编辑处理:如果不匹配,则默认输出至标准输出:然后继续处理下一行,直到文件的末尾. 默认情况下,sed的所有处理行为不会影响源文件的内容: 我们一般会使用sed命令来自动编辑一个或多个文件,简化对文件的循环操作: se

Linux中vim的三种模式以及基本命令

在Linux中vim的三种模式分别为:命令模式.末行模式.编辑模式.以下是三者的关系图: 三种模式的彼此切换: 命令模式是vim中的默认模式. 命令模式切换至末行模式: 使用英文冒号(:). 末行模式切换至命令模式: 按一下esc 或者 两下esc 或者 删除末行的全部命令. 命令模式切换至编辑模式: 按键 i 或者 a. 编辑模式切回命令模式: 按下esc. 其中,末行模式 和 编辑模式 之间,不能直接切换,必须切换到命令模式,再进行切换. 接下来细化到每个模式下的各种命令操作: 一.末行模式

【vim】几种模式的切换

很多初学者启动vim后,不知道怎么输入字符:按了半天字母,结果屏幕还是空的. vim和记事本或WORD不一样,不是一打开后就可以输入文字,此时它处于正常模式. vim一共有4个模式: 正常模式 (Normal-mode) 插入模式 (Insert-mode) 命令模式 (Command-mode) 可视模式 (Visual-mode) 注意:方向键(上下左右那几个)可以在vim屏幕里跳来跳去.现在知道这个对体验以下的模式有用.但是,通过方向箭来移动,是一个笨办法...讲到正常模式时会说到更好的方

技巧:Vim 的纵向编辑模式

https://www.ibm.com/developerworks/cn/linux/l-cn-vimcolumn/ 开始之前 人类大脑对文字的处理是平面式的,所以我们浏览文章.查找资料或者重构代码,要么是横向读,要么是纵向读,要么使用搜索功能,将文字作为一个平面整体.而在编辑文字.编写代码的时候则不是横向就是纵向.常规文本编辑器都是横向编辑,而纵向编辑也常被作为特色功能.比如 Vim.EditPlus.UltraEdit 这些编辑器都有纵向编辑模式,或者称为列模式.像日常文字处理工具 Mic

linux中vim编辑器三种模式及常用命令的使用

Linux命令经常使用才会烂熟于心 命令行模式: 移动光标: 向下左右箭头可以移动光标: 将光标移动到行尾:$; 将光标移动到行头:^: 将光标移动到页尾:shift+g; 将光标移动到页头:1+shift+g; 移动到目标行:n+shift+g; 快速向左右移动光标:ctrl+←/→键: 向左或者向右移动n个字符:n+←/→键: ----------------------- 删除: 删除光标所在行:dd; 删除光标所在行及之后的n-1行:dnd: 删除一个字母:x (相当于是del): 删除

vim编辑器,命令模式,插入模式,底行模式

linux系统开机时进入桌面系统用init5 vim编辑器的安装 yum --disablerepo=\* --enablerepo=c6-media install man vim -y 拷贝passwd到当前目录 命令模式 h左 j下 k上 l右 大写的 H当前屏的最开始 G当前屏的最末尾 M当前屏的最中间 如果要跳到某一行可以采用nG 但是数字不能用小键盘一定要用字母上面的键盘 复制一行   yy光标在哪一行就是复制的哪一行 复制多行    nyy 2yy 复制光标在的那一行及下一行 粘贴