sed命令及vim的末行命令

sed:StreamEDitor,流编辑器,以行为单位对一个或多个文件进行编辑处理;每一次sed都会处理给定文件中的一行内容。

在sed处理文本时,将正在处理的当前行存储到临时的缓冲区中,称为“模式空间”;用当前行去匹配给定的PATTERN,如果能匹配,则使用command编辑处理;如果不匹配,则默认输出至标准输出;然后继续处理下一行,直到文件的末尾。

默认情况下,sed的所有处理行为不会影响源文件的内容;

我们一般会使用sed命令来自动编辑一个或多个文件,简化对文件的循环操作;

sed命令:

sed - stream editor for filtering andtransforming text

sed [OPTION]... ‘script‘ [input-file]...

常用选项:

-n, --quiet, --silent:对于不能匹配模式的行,默认不输出到屏幕;

-e script, --expression=script:多条件编辑;

-f script-file, --file=script-file:从指定的script-file中读取脚本

注意:script-file为一个能够定位到脚本文件的路径,最好为绝对路径

-i[SUFFIX], --in-place[=SUFFIX]:原文件直接编辑操作;

-r, --regexp-extended:使sed支持扩展正则表达式;

script:

‘AddressesCommand‘

Addresses(地址定界):

1.空地址:对所有文件的所有行进行处理;

2.单地址:sed对于能够匹配该地址的那唯一一行进行处理;

num:表示行号;

/pattern/:能够匹配该模式的所有行;

$:表示文档最后一行

3.地址范围:

addr1,addr2:从addr1开始到addr2结束的中间所有行;

例如:2,8

first~step:从first标记的行号开始,以step所代表的数字为步长;

例如::1~2为奇数行  2~2为偶数行

addr1,+N:从addr1开始,包括addr1所在行,并继续向后计算N行;

例如:2,+7匹配到的行数为23456789一共八行,相当于2,2+7

addr1,~N:从addr1开始,包括addr1所在行,向后计算addr1*N行;

例如:2,~5相当于2,2*5

/pattern1/,/pattern2/:从被pattern1匹配的第一行开始计算,一直到被/pattern2/匹配到的第一行结束;

Command(处理命令):

=:显示被模式匹配的行的行号

例如:sed -n‘/^$/=‘ /etc/grub2.cfg

a\text:在被模式匹配的行的后面追加text的内容,支持使用\n换行,从而实现多行追加;

i \text:在被模式匹配的行的前面插入text的内容,支持使用\n换行,从而实现多行插入;

c \text:将被模式匹配的行的修改为text的内容,支持使用\n换行,从而实现一行变多行;

d:在模式空间中删除被模式匹配的行;这样的行不能再进行标准输出;

注意:在使用d命令的时候,不宜使用-n选项;

p:显示模式空间中被模式匹配的行;

注意:在使用p命令的时候,通常会搭配-n选项;

w filepath:将模式空间中被模式匹配的行,另存到filepath文件中;

r filepath:将filepath文件的内容追加至模式空间中被模式匹配的行之后;

!Command:在模式空间中被模式匹配的行,不执行Command命令;相反,未被模式匹配的行,参会执行Command命令

s///:查找替换,分隔符可以任意更换,只要相同即可;

[email protected]@@, s###, s,,,

s/pattern/text/[control]

[email protected]/etc/[email protected]/etc/[email protected]

pattern:计划查找并替换的内容

text:要替换的结果

control:如何进行替换

g:行内全部替换

p:显示替换成功的行

w filepath:将替换成功的行另存到filepath文件中;

支持后向引用:

s/\(string\)/&/

s/\(string\)/\1/

高级编辑命令:

h: 把模式空间中的内容覆盖至保持空间中

H:把模式空间中的内容追加至保持空间中

g: 从保持空间取出数据覆盖至模式空间

G:从保持空间取出内容追加至模式空间

x: 把模式空间中的内容与保持空间中的内容进行互换

n: 读取匹配到的行的下一行覆盖至模式空间

N:追加匹配到的行的下一行至模式空间

d: 删除模式空间中的行

D:删除多行模式空间中的所有行

时间: 2024-11-14 06:23:39

sed命令及vim的末行命令的相关文章

【vim使用】末行命令的扩展、总结

末行命令主要是针对文件进行操作的: 保存.退出.保存并退出.搜索.替换.另存为.新建.浏览当前目录下的文件列表. 命令 英文 功能 :e . edit 会打开vim中内置浏览器,浏览当前目录下的文件列表. :n 文件名 new 新建文件. :w 文件名 write 另存为.(但vim任然编辑当前的文件,并不会切换文件) 提示:切换文件之前,必须保证当前这个文件已经被保存!  已经学过的末行命令: 命令 英文 功能 :w write 保存 :q quit 退出.(如果没有保存,不允许退出) :q!

vim的末行模式讲解

末行模式重点讲解(这是学好sed的基础) 1)地址定界 :start_pos[,end_pos] #: 特定的第#行,例如5 为第五行.: 当前行$:最后一行 #,#:指定行范围,左侧为起始行 #,#+:指定行范围,右侧为左侧行的偏移量 ,例如:3,+7%:全文 /pattern/:第一次被模式所匹配到的行 2:可实现编辑操作 ,同编辑命令一同使用d:表示直接删除,要求直接跟在地址定界符号的后面, 例如::.,$d 表示当前行到最后一行删除.y:用来复制地址定界匹配到的行c:用来修改地址定界匹配

liunx命令6 vim编辑、压缩命令、rpm、yum及源码包编译安装

[[email protected] ~]# yum install -y vim-enhanced vim打开文件编辑(有颜色) [[email protected] ~]# vim  !$                   //上一条命令的最后一条参数 [[email protected] ~]# vim +10 !$                //打开文件进入第十行 :set number                                 //显示行号 vim 一般模式

vim末行模式与sed命令

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

Linux命令:vim

 linux下vim编辑器简介: Visual Interface iMproved也叫全屏编辑器,模式化编辑器 四种模式: 编辑模式 (命令模式)        输入模式 (Insert) 末行模式 (  :  )        替换模式 (Replace)     1.模式转换: 编辑模式  转  输入模式: i:   在当前光标所在字符的前面,转为输入模式: a:   在当前光标所在字符的后面,转为输入模式: o:   在当前光标所在行的下方,新建一行,并转为输入模式: I:  在当前光标

马哥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基础命令(2)-命令行命令

命令行命令-<:normal>这个命令可以重复上一个操作.他其实就跟.命令的效果查不到.不同的是,他可以把.的效果,作用于你用可视模式下的多行.例如,如果你想在下面的文字里在每一行加一个;号,那么你可以使用如下的方法aaaaabbbbccddddd光标在第一行,A;<Esc>,然后<Ctrl-v>G,最后在:normal .就行了.当然,在可是模式下,你使用命令行,会发现命令行的格式如下:<,'>它表示的是选中的行.当然,我们也可以把上面的那个.命令,变更为

linux中vim编辑器各种常用命令及用法

linux中vim编辑器的常用命令以及用法(注意严格区分大小写以及中英文): vim编辑器有三种模式,分别是:编辑模式,输入模式以及末行模式. 模式转换: 编辑模式>>>输入模式: i:在光标所在字符前面,转为输入模式(即转完后在光标所在字符前输入):                      I:在光标所在行的行首,转为输入模式(即转完后在行首输入,不包括行首空                         白) a:在光标所在字符后,转为输入模式(即转完后在光标所在字符后面输入):

bash命令/文件管理-vim操作

命令模式(移动光标.复制.剪切 d.粘贴 p.删除 x.撤销 u.重做Ctrl+r.替换 r) 插入模式(写入新数据)a(字后插入) i(字前插入) o(插入新行) 末行模式(保存文件w.另存为w filename.打开文件 o.读取文件 r.查找替换 s) 命令模式 移动光标 h 向左.j 向下.k 向上.l 向右 行首 ^ 行尾 $ 首行 1G 或者 gg 末行 G w         跳向下一个单词 复制 y yy        复制本行 2yy      复制2行 yw       复制