sed
Sed
sed:linux三剑客之一,sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作。
其中,sed的替换功能应用极为广泛,下面主要先介绍下它的替换功能。
取IP地址的例子:过滤功能
ifconfig eth0|sed -n '2p'|sed -nr 's#^.*addr:([0-9].*) B.*#\1#gp'
结果:ip地址
sed替换功能举例如下:
[root@xhsj_ClouderaManager test]# cat test.txt
oldboy
oldboy
把oldboy替换成oldgirl:
sed -i 's/oldboy/oldgirl/' test.txt
结果:
cat test.txt
oldgirl
oldgirl
s:表示查找并替换。
find与sed结合以及例子
把/data/目录下所有含有test文件的里面的内容里的oldboy换成oldgirl: find与sed结合
[root@saltstack-client1 data]# pwd
/data
[root@saltstack-client1 data]# ls
a b c d e test tomcat
法一:
[root@saltstack-client1 data]# find /data/ -type f -name "test.txt" |xargs sed -i 's#oldboy#oldgirl#g'
法二:
[root@saltstack-client1 data]# find /data/ -type f -name "test.txt" -exec sed -i 's#oldboy#oldgirl#g' {} \;
Sed命令实战复习回顾
打印
例子:
[root@saltstack-client1 data]# cat oldboy.txt
ddd fff
2ddd fff
3ddd fff
打印第二行内容:
[root@saltstack-client1 data]# sed -n '2p' oldboy.txt
2ddd fff
打印第一行到第二行的内容:
[root@saltstack-client1 data]# sed -n '1,2p' oldboy.txt
ddd fff
2ddd fff
替换
把文件里内容里的所有的ddd换成oldboy:
[root@saltstack-client1 data]# sed -i 's#ddd#oldboy#g' oldboy.txt
[root@saltstack-client1 data]# cat oldboy.txt
oldboy fff
2oldboy fff
3oldboy fff
Sed的后项引用
Sed的后项引用:
后向引用的例子:
取出ip地址的例子:sed
[root@saltstack-client2 test]# ifconfig
eth2 Link encap:Ethernet HWaddr 52:54:00:55:D7:6D
inet addr:10.122.129.55 Bcast:10.122.129.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2876420 errors:0 dropped:0 overruns:0 frame:0
TX packets:265070 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:693181412 (661.0 MiB) TX bytes:24669346 (23.5 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:84802 errors:0 dropped:0 overruns:0 frame:0
TX packets:84802 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4240622 (4.0 MiB) TX bytes:4240622 (4.0 MiB)
法一:sed
[root@saltstack-client2 test]# ifconfig eth2|sed -n 's#^.*dr:\([0-9].*\) Bcast.*$#\1#gp'
10.122.129.55
法二:sed
[root@saltstack-client2 test]# ifconfig|sed -n '2p'|sed -n 's#^.*dr:\([0-9].*\) Bcast.*$#\1#gp'
10.122.129.55
法三:自己搞的
[root@saltstack-client1 ~]# ifconfig eth2
eth2 Link encap:Ethernet HWaddr 52:54:00:3C:DD:D5
inet addr:10.122.129.54 Bcast:10.122.129.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3775521 errors:0 dropped:0 overruns:0 frame:0
TX packets:418876 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:881222306 (840.3 MiB) TX bytes:38853944 (37.0 MiB)
[root@saltstack-client1 ~]# ifconfig eth2|sed -n 's#^.* addr:\([0-9].*\) Bca.*$#\1#gp'
10.122.129.54
Sed与正则表达式相关以及相关的例子
sed -r 's#(可以用正则匹配)#\1#g' oldboy.txt
r:表示小括号里一些特殊字符不需要反斜线转义了,而是使用正则。
例子:
[root@saltstack-client1 data]# cat oldboy.txt
oldboy fff
2oldboy fff
3oldboy fff
[root@saltstack-client1 data]# sed -r 's#(.*)ff#\1#g' oldboy.txt
oldboy f
2oldboy f
3oldboy f
[root@saltstack-client1 data]# sed -r 's#(.*)f#\1#g' oldboy.txt
oldboy ff
2oldboy ff
3oldboy ff
[root@saltstack-client1 data]# sed -r 's#(.*) (.*)#\1 \2#g' oldboy.txt
oldboy fff
2oldboy fff
3oldboy fff
[root@saltstack-client1 data]# sed -r 's#(.*)#\1#g' oldboy.txt
oldboy fff
2oldboy fff
3oldboy fff
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性