文本处理工具 sed 使用方法

sed

sed是一种非交互式的流编辑器,默认情况下,sed并不是改变源文件本身,而只是对流经sed命令的文本进行修改,并将修改后的结果,打印到标准输出中,所以sed只是对流进行操作,并不会改变源文件。sed处理文本是以行为单位的,每处理完一行,立刻打印出来,然后再处理下一行,直到全文处理结束。sed可做的编辑操作有,删除,查找,替换,添加,插入,从其他文件中读入数据。

sed的基本用法

1.使用sed修改文件流的方式

sed [参数] 'sed的命令集' file

例子:将this改成that的同时,将line改成LINE

sed -e 's/this/that/g' -e 's/line/LINE/g' xuejiao_lin.txt
也可以是用分号进行改写
sed -e 's/this/that/g' ; 's/line/LINE/g' xuejiao_lin.txt

2.sed的删除操作
使用d命令可以删除指定的行
例子:将file的第一行删除后输出到屏幕

sed '1d' xuejiao_lin.txt

由于sed默认不修改源文件,如果希望保存修改后的源文件,需要重定向

sed '1d' xuejiao_lin.txt > saved_file
如果想直接修改文件,使用-i参数
sed -i '1d' file //直接修改源文件,不会有输出

删除指定范围的行(第一行到第五行)

sed '1,5d' xuejiao_lin.txt
删除第一行到最后一行
sed '1,$d' xuejiao_lin.txt
删除最后一行
sed '$d' xuejiao_lin.txt
删除指定范围的行,只保留第五行
sed '5!d' xuejiao_lin.txt
删除所有空行
sed '/^$/d' xuejiao_lin.txt
删除所有含有empty的行
sed '/empty/d' xuejiao_lin.txt

3.sed的查找替换
使用s命令可将查找到的匹配文本内容替换为新的文本

s命令用于文本替换,使用LINE替换line(注意每一行只有第一个line被替换,默认情况下只替换第一次匹配到的内容
sed 's/line/LINE/' xuejiao_lin.txt
要想每行最多匹配两个line,并改称LINE
sed 's/line/LINE/2' xuejiao_lin.txt
sed 使用g可以完成所有匹配值的替换
sed 's/line/LINE/g' xuejiao_lin.txt
只替换开头的this
sed 's/^this/LINE/' xuejiao_lin.txt

4.字符替换
使用y命令进行字符替换,将一系列字符逐个换成另外一系列字符(注意替换的字符的长度一定要相同,否则不能使用sed)

1换A,2换B,3C4D
sed 'y/1234/ABCD/' xuejiao_lin.txt

5.插入文本
使用i或a插入文本,i代表在匹配行之前插入,a代表在匹配行之后插入

使用i在第二行之前插入
sed '2 i Insert' xuejiao_lin.txt
使用a在第二行之后插入
sed '2 a Insert' xuejiao_lin.txt
在匹配行的上一行插入
sed '/Second/i\Insert' xuejiao_lin.txt

6.读入文本
使用r命令可从其他文件中读取文本,并插入匹配行之后

将/etc/passwd中的内容独处放到xuejiao_lin.txt空行之后
sed '^$/r /etc/passwd' xuejiao_lin.txt

7.打印
使用p命令可进行打印,这里使用sed命令时,一定要加上-n 表示不打印没关系的行

打印出指定的行
sed -n '1p' xuejiao_lin.txt

猜你喜欢

转载自blog.csdn.net/m0_37947204/article/details/80302327