shell中的文本处理命令:sed命令

shell中的文本处理命令:sed命令

1.什么是sed

在这里插入图片描述
sed的优点:sed速度快。在启动vim的时间,sed已经完成了需要执行的操作

2.sed命令选项

在这里插入图片描述

3.几种调用sed的方式

1.在命令行调用sed

1.单句替换

s/要替换的部分/替换成的部分

echo "This is a test" | sed 's/test/testing/' #s/要替换的部分/替换成的部分

在这里插入图片描述

2.对于整个文件进行替换

sed 's/dog/fox/' test1

sed命令只是改变了输出内容,没有改变文件内容
在这里插入图片描述

3.-e:在一个命令行调用多个编辑器,同时进行多个替换

sed -e 's/dog/tiger/;s/cat/bird/' test1 #中间用分号割开

#或者可以:
sed -e '
> s/white/red/
> s/dog/tiger/
> s/cat/bird/' test1 #这种方式不需要分号

在这里插入图片描述

2.-f:在文件中调用编辑器

sed -f file test1 #-f 命令文件 要替换的文件

在这里插入图片描述

4.s 替换命令

脚本替换中的几个替换标记

不加任何参数时默认替换每句中出现第一次的关键字

sed 's/test/trial/' test2

在这里插入图片描述

1.g 替换文本中每处匹配模式

替换所有匹配到的关键字

sed 's/test/trial/g' test2

在这里插入图片描述

2.num(例如2)

加具体的num参数,替换每句中出现第n次的关键字:

sed 's/test/trial/2' test2

在这里插入图片描述

3.参数p和-n:只输出被命令修改过的行

p显示指定句,通常和-n搭配使用;
-n:默认不显示所有内容

sed -n 's/test/trial/p' test3		#只显示修改部分
sed -n 's/number/num/' test4		#使用-n而不使用p参数时,不会有显示
sed -n '/number3/p' test4			#显示匹配到的含有number3的行
sed -n '2,4p' test4					#显示2到4行

在这里插入图片描述
在这里插入图片描述

4.w 将输出保存在文件中(只包含操作替换的行)

sed 's/test/trial/w haha' test3	#将修改的句子写入haha文件

在这里插入图片描述

5.替换字符

方法1:用\转义符号进行转义

sed 's/bin\/bash/bin\/csh/' passwd

在这里插入图片描述

方法2:将替换命令中的/改为!

sed 's!bin/bash!bin/csh!' passwd

在这里插入图片描述

方法3:将替换命令中的/改为#

sed 's#bin/bash#bin/csh#' passwd

在这里插入图片描述

6.行寻址

如果想让命令只作用在指定的行

1.指定替换的行

sed '2s/dog/tiger/' test1			#指定替换第二行

sed '2,4s/dog/tiger/' test1			#指定替换第2到4行

在这里插入图片描述

2.利用正则表达式

sed '2,$s/dog/tiger/' test1			#指定替换第二行到最后

在这里插入图片描述

3.利用组合命令

[root@node2 sed]# sed '2{			#多个要求替换第二行
> s/dog/tiger/
> s/white/red/
> s/cat/bird/
> }' test1

在这里插入图片描述

7.d 删除行

没有改变源文件的内容,只是删除了输出内容

sed 'd' test4				#删除全部

sed '2d' test4				#删除第二行
sed '4d' test4				#删除第四行

sed '2,4d' test4			#删除第2到4行
sed '2,$d' test4			#删除第二行到结束的行

sed '/number 1/d' test4 #删除字符所在的行
sed '/number* 1/d' test4 #与正则表达式结合

在这里插入图片描述在这里插入图片描述在这里插入图片描述

8.a和i 插入数据

i和a:插入和追加

i 在指定行前插入新的行

echo 'test 2' | sed 'i\test line1'	#i表示插入到前面

在这里插入图片描述

a 在指定行后追加新的行

echo 'test 2' | sed 'a\test line1'	#a表示追加到末尾

在这里插入图片描述

对文件的指定行插入

sed '3i\test 1' test4			#插入到第三行前面
sed '3a\test 1' test4			#追加到第三行后面

在这里插入图片描述

$a 将新行插入在多行数据流末尾

sed '$a\This is an inserted line.\nThis is another inserted line.' test4  #\n是换行。不加则两句话写在一行

sed '$a\This is an inserted line.This is another inserted line.' test4

在这里插入图片描述

在第一行之前插入多行数据

[root@node2 sed]# sed '1i \
> new line1.\
> new line2.\
> new line3.' test4

在这里插入图片描述

9.c 修改

1.修改指定行

sed '3c\new line3.' test4

在这里插入图片描述

2.修改含有指定信息的行

sed '/number 1/c\new line3.' test4

在这里插入图片描述

3.修改多行

sed '2,4c\new line.' test4

注意:此处的修改多行为同时修改,而不是逐行修改
在这里插入图片描述

10.y 替换命令

唯一一个可以处理单个字符的sed命令

sed 'y/123/789/' test4

在这里插入图片描述
当一行中包含多个要修改的单个字符时,默认全部修改:

echo "This 1 is a test of 1 try." | sed 'y/123/789/'

在这里插入图片描述

11.打印行 p

echo "this is a test"|sed 'p' 

sed -n '/number 3/p' test4  #禁止其他行,只打印匹配到的行

sed -n '2,4p' test4
sed '2,4p' test4 

在这里插入图片描述在这里插入图片描述

12.打印行号 ‘=’

sed '=' test4

在这里插入图片描述

13.sed和文件一起工作

w 向文件中写入指定行

sed '1,3w test' test4

在这里插入图片描述

r 从文件中读取

将一个独立的文件插入到一个数据流中。

sed '3r test5' test4			#将test5添加到test4中第三行后面

#添加到包含指定信息行的后面
sed '/number2/r test5' test4

在这里插入图片描述在这里插入图片描述

发布了132 篇原创文章 · 获赞 1 · 访问量 1353

猜你喜欢

转载自blog.csdn.net/qq_36275923/article/details/104384028