linux shell编程 sed,Linux学习---shell编程(09-sed)

本文详细介绍了sed命令的使用,包括-n选项、行删除、行插入、行替换、字符串替换等操作,以及如何修改原文件。通过实例展示了sed在数据处理和文件编辑中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sed [选项] '[动作]'  文件名

选项:

-n  一般sed命令会把所有的数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处里的行输出到屏幕

-e  允许对输入数据应用多条sed命令编辑

-i  用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出

动作:

a\: 追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。

c\: 行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。

i\:  插入,在当前行前插入一行或多行。插入多行时, 除最后一行外,每行末尾需要用“\”代表数据未完结。

d:  删除,删除指定的行

p:  打印,输出指定的行

s:  字符串替换,用一个字符串替换另外一个字符串。格式为“行范围s/旧字符串/新字符串/g”(和vim中替换格式类似)

行数据操作

[siming@yesiming testDir]$ cat test

Id       Name Java   C++   Linux Average

1         Jim     80       81       82       81

2         Kate   90       91       92       91

3         HanMei        70       71       72       71

[siming@yesiming testDir]$ sed '2p' test  #打印了第二行后,又把原文件输出了一次

Id       Name Java   C++   Linux Average

1         Jim     80       81       82       81

1         Jim     80       81       82       81

2         Kate   90       91       92       91

3         HanMei        70       71       72       71

[siming@yesiming testDir]$ sed -n  '2p' test  # 加上-n 选项,就只输出经过sed处理的行

1         Jim     80       81       82       81

删除行

[siming@yesiming testDir]$ sed '2,3d' test  #删除2到3行,然后输出,但是并不改变原文件

Id       Name Java   C++   Linux Average

3         HanMei        70       71       72       71

[siming@yesiming testDir]$ cat test #原文件没有变

Id       Name Java   C++   Linux Average

1         Jim     80       81       82       81

2         Kate   90       91       92       91

3         HanMei        70       71       72       71

追加行

[siming@yesiming testDir]$ sed '2i你好呀' test  #在第二行后面插入新行

Id       Name           Java   C++   Linux Average

你好呀

1         Jim     80       81       82       81

2         Kate   90       91       92       91

3         HanMei        70       71       72       71

[siming@yesiming testDir]$ sed '2i hello \ #”\”表示回车后,下一行接着输入

> world!' test

Id       Name           Java   C++   Linux Average

hello

world!

1         Jim     80       81       82       81

2         Kate   90       91       92       91

3         HanMei        70       71       72       71

替换行

[siming@yesiming testDir]$ sed '3cData Error' test  #把第三行替换了

Id       Name           Java   C++   Linux Average

1         Jim     80       81       82       81

Data Error

3         HanMei        70       71       72       71

字符串替换

[siming@yesiming testDir]$ sed '4s/70/81/g' test  #把第四行的70替换成81

Id       Name           Java   C++   Linux Average

1         Jim     80       81       82       81

2         Kate   90       91       92       91

3         HanMei        81       71       72       71

修改原文件

[siming@yesiming testDir]$ sed -i '4s/70/81/g' test  #把第四行的70改成81,并且更新原文件内容,没有输出

[siming@yesiming testDir]$

多条件同时执行

[siming@yesiming testDir]$ sed -e 's/Jim/Hello/g;s/Kate/World/g' test

Id       Name           Java   C++   Linux Average

1         Hello  80       81       82       81

2         World           90       91       92       91

3         HanMei        81       71       72       71

#因为没有家行号,所以把整篇文档中的Jim换成Hello,Kate换成World

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值