04.13 三剑客之老二sed命令详解

本文详细介绍了sed命令的基础知识、参数及命令使用方法,并通过实例演示了如何进行文本处理、模式匹配等常见任务。

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

第一章 sed命令简介

1. sed简介
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

2. 定址
可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如1,3表示1,2,3行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定 。


第二章 参数详解&案例

调用sed命令有两种形式:
sed [options] ‘command’ file(s)
sed [options] -f scriptfile file(s)

参数参数说明
-n取消默认的sed软件的输出,常与sed命令的p连用。
-e一行命令语句可以执行多条sed命令。
-f选项后面可以接sed脚本的文件名。
-r使用扩展正则表达式,默认情况sed只识别基础正则表达式。
-i直接修改文件内容,而不是输出到终端。sed软件只是修改在内存中的数据,并不会影响磁盘上的文件。
【-n】
[root@CentOS7 ~]# sed -n '1,2p' test.txt 
I am studying linux
awk sed grep

【-e】
[root@Never-downtime ~]# sed -e  '3,$d' -e 's#10#01#g' guo.txt 
01 01 01 01 01
01 01 01 01 01

【-f】
sed [options] -f scriptfile file(s)

【-r】
[root@CentOS7 ~]# head -1 test.txt|sed -r 's#(.*)#head \1#g'
head I am studying linux

【-i】
sed -i '#linux#mysql#g' test.txt

第三章 sed命令详解&案例

sed-command解释说明
a追加,在指定行后添加一行或多行文本。 *****
c取代指定的行
d删除指定的行。 *****
D删除模式空间的部分内容,直到遇到换行符\n结束操作,与多行模式相关.
i插入,在指定行前添加一行或多行文本。 *****
h把模式空间的内容复制到保持空间。
H把模式空间的内容追加到保持空间。
g把保持空间的内容复制到模式空间。
G把保持空间的内容追加到模式空间。
x交换模式空间和保持空间的内容。
l打印不可见的字符。
n清空模式空间的内容并读入下一行。
N不清空模式空间,并读取下一行数据并追加到模式空间。
p打印模式空间的内容,通长p会与选项-n一起使用。
P打印模式空间的内容,直到遇到换行符\n结束操作。
q退出sed
r从指定文件读取数据。
s取代,s#old#new#g 这里g是s命令的替代标志,注意和g命令区分。
w另存,把模式空间的内容保存到文件中。
y根据对应位置转换字符。
:label执行该标签后面的命令。
t如果前面的命令执行成功,那么就跳转到t指定的标签处,继续往下执行后续命令。否则,仍然继续正常的执行流程。
【a】
[root@CentOS7 ~]# sed -i '2aI am xiao ming' test.txt
[root@CentOS7 ~]# cat test.txt 
I am studying linux
awk sed grep
I am xiao ming
server become skilled at
gain knowledge be trained
learning...

【c】
[root@CentOS7 ~]# sed -i '2c awk sed egrep' test.txt 
I am studying linux
awk sed egrep

【d】
[root@CentOS7 ~]# sed -i '2d' test.txt 
I am studying linux
I am xiao ming
server become skilled at
gain knowledge be trained
learning...

【i】
[root@CentOS7 ~]# sed -i '1i number one' test.txt 
number one
I am studying linux

【l】
[root@CentOS7 ~]# sed 'l' test.txt 
I am studying linux
I am studying linux
awk sed grep
awk sed grep
I am xiao ming
I am xiao ming
server become skilled at
server become skilled at
gain knowledge be trained
gain knowledge be trained
learning...
learning...

【s】
[root@Never-downtime ~]# sed -i 's#10#01#g' guo.txt 
01 01 01 01 01
01 01 01 01 01

第四章 特殊符号详解&案例

特殊符号解释说明
到指定行以外的所有行应用命令
=打印当前行行号。
~1~5 表示从1行开始,以步长5递增。
&代表被替换的内容。
实现一行命令语句可以执行多条sed命令。
{}对单个地址或地址范围执行批量操作。
+地址范围中用到的符号,做加法运算。
【!】
[root@Never-downtime ~]# sed '2,4!d' guo.txt 
02
03
04

【=】
[root@CentOS7 ~]# sed  '=' test.txt 
1
I am studying linux
2
awk sed grep
3
I am xiao ming
4
server become skilled at
5
gain knowledge be trained
6
learning...

【~】
[root@Never-downtime ~]# sed  '2~2d' guo.txt 
01
03
05
07
09
11
13

【&】
[root@CentOS7 ~]# sed -r 's#awk#print &#g' test.txt 
I am studying linux
print awk sed grep
I am xiao ming
server become skilled at
gain knowledge be trained
learning...

【;】
[root@CentOS7 ~]# sed -r 's#awk#print &#g' test.txt ;[root@Never-downtime ~]# sed  '2~2d' guo.txt 

第五章 地址范围详解&案例

地址范围含义
10对第10行操作
10,20对10到20行操作,包括第10,20行
10,+20对10到30行操作,包括10,30行
1~2对1、3、5、7…..行操作。
10,$对10到最后一行操作,包括第10行
/oldboy/对匹配oldboy的行操作
/oldboy/,/alex/对匹配oldboy的行到匹配alex的行操作
/oldboy/,10对匹配oldboy的行到第10行操作,注意:如果前10行没有匹配到oldboy,sed软件会显示10行以后的匹配的行
1,/alex对第一行到匹配alex的行操作。
/oldbooy/,+2对匹配oldboy的行到其后的2行操作。
10】
[root@CentOS7 ~]# sed '10d' test.txt 
I am studying linux
awk sed grep
I am xiao ming
server become skilled at
gain knowledge be trained
learning...
01
02
03
05
0610,20】
[root@CentOS7 ~]#sed -n '10,20p' test.txt10,+20】
[root@CentOS7 ~]#sed -n '10,+20p' test.txt1~2】
sed '1~2d' test.txt

【10,$】
sed '10,$d' test.txt

【/oldboy/】
sed '/oldboy/d' test.txt

【/oldboy/,/alex/】
sed '/oldboy/,/alex/d' test.txt

【/oldboy/,10】
sed '/oldboy/,10d' test.txt

【1,/alex】
sed '1,/alex/d' test.txt

【/oldbooy/,+2】
sed '/oldboy/,+2d' test.txt

第六章 sed调试工具

sedsed软件是一个很棒的调试sed语句的工具,sedsed软件会详细的显示sed执行流程。
sedsed软件是用时下最流行的语言python写的,简单易用。

wget http//:sedsed.sourceforge.net/sedsed-1.0 -O /bin/sedsed
chmod +x /bin/sedsed
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值