sed常用知识点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sed常用知识点相关的知识,希望对你有一定的参考价值。

p 打印模式空间内容

d 删除模式空间内容

a 追加一行

i 插入一行

c 替换一行

! 非


n 读入一行,覆盖掉模式空间内容

举个例子echo -e ‘1\n2\n3\n4‘|sed ‘n;s/\n//‘

首先读入第一行,此时模式空间为1$

然后执行n命令,输出模式空间后,读入下一行,此时模式空间为2$,然后执行之后的s/\n//

接下来再读入下一行,此时模式空间为3$

。。。

N 读入一行,追加到模式空间中

举个例子echo -e ‘1\n2\n3\n4‘|sed ‘N;s/\n//‘

首先读入第一个行,此时模式空间为1$

然后执行N命令,追加到模式空间,此时模式空间为1\n2

接着执行s/\n//命令,将\n删除,然后输出模式空间内容12

接下来继续读入下一行,此时模式空间为3$

。。。


p 打印模式空间内容

举个例子echo -e ‘1\n2\n3\n4‘|sed ‘/2/p‘

首先读入第一行,此时模式空间为1$,不匹配

然后读入第二行,此时模式空间为2$,匹配执行p命令

。。。

注:由于sed逐行执行,模式输出模式空间内容,所以当匹配执行p的时候,匹配行会打印两次

P 打印模式空间第一行

举个例子echo -e ‘1\n2\n3\n4‘ |./sedsed -d --hide=hold ‘N;P‘

首先读入第一个行,此时模式空间为1$,然后执行N命令,读入下一行并追加到模式空间,此时模式空间为1\n2,然后执行P命令打印模式空间第一行也就是\n前面的内容

然后再模式输出模式空间

接下来继续读入下一行,此时模式空间为3$

。。。



d 删除模式空间内容

举个例子echo -e ‘1\n2\n3\n4‘ |./sedsed -d --hide=hold ‘/2/d‘

首先读入第一行,此时模式空间为1$,不匹配自动输出

再读入第二行,此时模式空间为2$,匹配,执行d命令,清空模式空间

接着读入下一行,此时模式空间为3$

。。。

注d执行后不会传入到标准输出去,还会放弃之后的命令,读取新的内容

D 删除模式空间第一行内容

举个例子echo -e ‘1\n2\n3\n4‘ |./sedsed -d --hide=hold ‘N;D‘

首先读入第一行,此时模式空间为1$,执行N命令,此时模式空间为1\n2,然后执行D命令,删除第一行后为2$,不传入标准输出,放弃后面命令读取下一行

读入下一行,此时模式空间为2\n3。。。


h将当前模式空间中内容覆盖至保持空间

H将当前模式空间中的内容追加至保持空间


g将当前保持空间中内容覆盖至模式空间

G将当前保持空间中的内容追加至模式空间


x将当前保持空间和模式空间内容互换

#################################

1.删除空行

一般情况 sed ‘/^$/d‘ file

特殊情况,存在tab等制表符 sed ‘/^\s*$/d‘ file

\s代表 tab \r \n 空格等


2.打印行号

sed -n ‘/if/=‘ file

打印匹配if的行的行号

sed -n ‘$=‘ file

打印文件共计行数


3.多行命令

N读取下一行到模式空间,插入到模式空间当前行的下面一行并以\n分割;n是先将模式空间内容输出之后再读入到模式空间代替之前的内容

D删除模式空间的第一行,第一行为\n之前的内容;d是删除模式空间中所以内容

P打印模式空间的第一行,第一行为\n之前的内容;p是打印模式空间中所以内容

注,print命令一般使用在next之后,delete之前

h将模式空间的内容复制到保持空间,覆盖保持空间;H将模式空间内容追加到保持空间,在原保持空间后加入换行符

g将保持空间的内容复制到模式空间,覆盖模式空间;G将保持空间内容追加到模式空间,在原模式空间后加入换行符

x交换模式空间和保持空间内容


4.标签

b标签,无条件跳转

sed ‘/lable/ba;s/lable/LABLE/;:a;s/$/\!/‘ file

如果匹配lable则跳转至标签a处

不匹配lable则从左到右依次执行


t标签,有条件跳转

sed ‘/lable/s/lable/LABLE/;t;s/$/\!/‘ file

如果匹配就执行匹配后面的替换

不匹配就跳到t标签处,执行后面的替换


本文出自 “八英里” 博客,请务必保留此出处http://5921271.blog.51cto.com/5911271/1749156

以上是关于sed常用知识点的主要内容,如果未能解决你的问题,请参考以下文章

linux-基础知识-第20天

shell——记录个人脚本的一个进阶

python常用知识点

用sed结合awk和grep修改匹配到的行的内容,以及用到的重要shell命令记载(长更)

javascript常用知识点集

第四周总结