sed样例

本文详细介绍了Linux命令sed的使用,包括其命令格式、选项、内部指令以及各种过滤地址类型的应用。通过示例展示了如何删除、打印、替换、追加和插入文本,以及文件内容的处理和匹配。内容涵盖sed在文件行处理、内容替换、多行匹配等方面的多种场景。

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

默认不编辑源文件,仅对模式空间中的数据做处理,处理结束后将模式空间内容打印至屏幕

sed命令格式
sed 选项 ‘过滤地址命令’ 源文件 ‘’中的内容为地址和命令两部分不用空格隔开

选项
-n 静默模式 取消sed默认输出
-i 修改源文件
-e 允许多项编辑
-r 扩展正则

sed内部指令
d 删除 删除符合条件的行
p 打印 显示符合条件的行
= 打印行号
N 向模式空间添加换行符
s 全文查找并替换
s的修饰符g全局替换
a 追加 a \追加内容 在指定的行后(下面)追加新行,内容为追加内容
i 插入 在指定的行后(上面)插入新行,内容为插入内容
c 指定某行进行内容替换 sed ‘3c aaaa’ test.txt 把第三行内容改成aaaa
r 将指定的文件的内容添加至符合条件的行处(可用来合并文件)

过滤地址类型
1 开始行,结束行 $表示最后一行
例:删除第二行到第六行内容
sed ‘2,6d’ /etc/fstab
删除第二行和第四行内容
sed -i ‘2d;4d’ fstab

2 /匹配字符或正则表达式/
sed ‘/过滤内容/处理命令’ 文件 指定过滤内容要用//括起来
例:删除包含有fs字符的行
sed “/fs/d” /etc/fstab

3 /模式1/,/模式2/(多行连续匹配)
第一次被模式1匹配到的行开始至第一次被模式2匹配到的行结束,这中间所有的行
/模式1/;/模式2/
只输匹配到的出模式1和模式2(多行但不连续)

4 指定行号
一个数字表示指定行号
例:删除第一行
sed ‘1d’ /etc/fstab

5 某行,+N
从某行开始,向后的N行
例:删除从第一行开始和后两行
sed ‘1,+2d’ /etc/fstab

特殊符号&代表被替换的内容
sed ‘s#C#–&--#g’ person.txt
注:把文件中C替换为–C-- &表示为匹配到的内容

插入和追加内容
例:在以/开头的行追后追加一个新行 内容为# hello word
sed ‘/^//a # hello word’ /etc/fstab
i 插入 i \插入内容 在指定的行前面(上面)添加新行,内容为追加内容
例2:插入两行
sed ‘/sys/i # hello word\n#nihao’ /etc/fstab
注:追加或插入多行用\n换行符
在文件第一行上插入# hello word
sed -i ‘1i# hello word’ fstab
在最后一行下面追加# hello word
sed -i ‘$a# hello word’ fstab
在UUID这行的上面插入hello并且在UUID下面追加word
sed -i -e ‘/UUID/ihello’ -e ‘/UUID/aword’ fstab
在这里插入图片描述
注:-e多项编辑,每一个编辑项前面都必须要加-e参数

sed ‘2r /etc/passwd’ /etc/fstab #2表示第二行 可以指定字符 /Creat/表示在Creat行的下一行添加
w 将指定范围内的内容另存至制定的文件中
sed ‘/root/w /tmp/root.txt’ /etc/passwd

例:
1 打印配置文件/etc/passwd 内容的行号以及内容
方法1 行号和内容分行了
sed = /etc/passwd
方法2
sed = /etc/passwd|sed ‘N;s#\n#\t#g’

2 提取文件test.txt(I am tom,my qq xxxxxx)中的名字和qq号
[root@tom01 ~]# sed ‘s#,# #g’ test.txt|cut -d " " -f3,6
tom xxxxxx

3 /etc/passwd 文件中共有多少行
[root@tom01 ~]# sed -n ‘$=’ /etc/passwd
24

4 不显示文件中的空白行
sed ‘/^$/d’ README.txt

5 把目录下以jpg结尾的文件改为htm
[root@tom01 ~]# ls .jpg|sed -r 's#(.).jpg#mv & \1.html#g’|bash

6 只查看文件第10行到20行内容
[root@tom01 ~]# sed -n ‘10,20p’ /etc/passwd
uucp❌10:14:uucp:/var/spool/uucp:/sbin/nologin
operator❌11:0:operator:/root:/sbin/nologin
games❌12💯games:/usr/games:/sbin/nologin
gopher❌13:30:gopher:/var/gopher:/sbin/nologin
ftp❌14:50:FTP User:/var/ftp:/sbin/nologin
nobody❌99:99:Nobody:/:/sbin/nologin
dbus❌81:81:System message bus:/:/sbin/nologin
vcsa❌69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth❌499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix❌89:89::/var/spool/postfix:/sbin/nologin
sshd❌74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

7 提取ip地址
[root@tom01 ~]# ifconfig |sed -nr ‘s#^.dr:(.) Bc.*#\1#gp’
192.168.56.7

8 按单词出现频率降序排序
The months of learning in Old Boy education are the few months that I think the time efficient is the most.I had also studied at other training institutions before, but I was hard to understand what the tutor said and hard to follow. It was just too much to learn with no outline.

[root@tom01 ~]# sed ‘s# #\n#g’ test.txt |sort|uniq -c|sort -rn

9 只修改第一次匹配到行的内容
sed -i ‘0,/protocol="HTTP/1.1/ s#protocol=“HTTP/1.1”#protocol=“org.apache.coyote.http11.Http11AprProtocol”#’ server.xml
注:HTTP/1.1 的反斜线是转译

10 修改文件内容快速备份
sed -i参数在实际修改文件内容的时候,可以进行快速备份
sed -i.bak ‘3d’ fstab
在删除fstab文件第三行前先把文件备份,备份后文件为fstab.bas,-i参数后面加的内容就是备份文件名称,所以-i参数要在所有参数最后出现

在修改文件内容时-n和-i参数不要在一起使用,ni参数同时使用会将文件清空,只保留了修改的内容
-ni

11 去重
echo nneettssttaatt --llaannppttuu |sed -r ‘s#(.)(.)#\1#g’
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值