Linux sed命令

一 删除 d命令

1.删除指定行

sed '1d' 文件名

解释:这里可以把1换成任意行,然后删除任意指定的行,

2.删除指定范围内行

sed '1,5d' 文件名

3.删除指定行以外其他行

sed '3!d' 文件名

4.删除最后一行

sed '$d' 文件名

5.删除空行

sed '/^$/d' 文件名

二  查找替换 s命令

1.替换每一行第一个匹配到的字符串

sed 's/lalala/LALALA' 文件名

解释:如果这里每行有3个lalala,则只有第一次出现的lalala会被替换成LALALA

2.替换每一行匹配到最多出现2次的字符串

sed 's/lalala/LALALA/2' 文件名

解释:如果这里每行有2个以上lalala,则前两个出现的lalala会被替换成LALALA,剩下的不会

3.替换每行所有匹配到的字符串

sed 's/lalala/LALALA/g' 文件名

解释:这里不管每行出现几个lalala都会被替换成LALALA

4.只替换开头匹配到的字符串

sed 's/^lalala/LALALA/' 文件名

解释:只替换第一个,效果同sed 's/lalala/LALALA' 文件名

三 字符转换 y命令

注意替换前后的字符长度应相同,是将字符逐个替换的命令

1.将123替换成ABC

sed 'y/123/ABC/' 文件名

这里不是将123替换成ABC,而是将1替换成A,2替换成B,3替换成C

四 插入 i命令 a命令

区别:i为在匹配行之前插入,a为在匹配行之后插入

1.在某一行前插入文本

sed '2 i lalala' 文件名

解释:在第二行前插入lalala,lalala单独占一行,是第二行,原来的第二行变成第三行

2.在某一行后插入文本

sed '2 a lalala' 文件名

解释:在第二行后插入lalala,lalala单独占一行,是第三行,原来的第二行还是第二行,原来的第三行变成第四行

3.在匹配行的上一行插入文本

sed '/lalala/i\LALALA' 文件名

解释:在出现lalala的行的上一行插入LALALA,LALALA单独占一行

五 读入文本 r命令

1.将某文本内容读取后插入到匹配行之后

sed '/^$/r etc/passwd' 文件名

解释,将etc/passwd文件的内容读取后插入到空行后

六 打印 p命令

p命令用来打印,-n参数用来简化输出,不现实未匹配的行

1.sed -n 's/lalala/LALALA/p' 文件名

解释:只打印包含lalala的行并将lalala替换为LALALA

七 写文件

sed命令本身不会修改文件本身的内容,只是将内容修改并输出到屏幕上,因此将修改的部分保存下来的方法有3种

1.重定向

sed 's/lalala/LALALA/g' 文件名1 > 文件名2

解释:将文件1的lalala全部替换成LALALA后保存为文件2

2.-i参数

sed -i ‘1d’ 文件名

解释:删除第一行并保存,且屏幕上无输出内容

3.w命令

sed -n '1,2 w 文件名2' 文件名1

解释:将文件名1的前两行保存到文件名2中,且不在屏幕上输出匹配内容

 

 

 

 

你可能感兴趣的:(shell)