sed [-nefr] [动作]
-n 只有经过sed处理的那一行才会被列出来
-e 直接在命令行模式进行sed的动作编辑
-i 直接修改读取文件内容,而不是由屏幕输出
动作
[n1[,n2]]function
a :新增的字符串出现在下一行
c :替换
d :删除
i :插入的字符串会出现上一行
p :打印,一般与-n一起用
s :替换 , 可以直接进行替换工作,通过s可以搭配正则表达式。 如1,220s/old/new/g.
实例:取出IP地址
$ ifconfig
eth0 Link encap:以太网 硬件地址 00:26:9e:ac:88:60
inet 地址:192.168.1.44 广播:255.255.255.255 掩码:255.255.255.0
inet6 地址: fe80::226:9eff:feac:8860/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:114449 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:37824 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:34102568 (34.1 MB) 发送字节:7223843 (7.2 MB)
中断:31 基本地址:0xe000
lo Link encap:本地环回
inet 地址:127.0.0.1 掩码:255.0.0.0
inet6 地址: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 跃点数:1
接收数据包:2018784 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:2018784 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:0
接收字节:1432347379 (1.4 GB) 发送字节:1432347379 (1.4 GB)
$ ifconfig | grep 'inet 地址:192' | sed 's/^.*地址://g' | sed 's/ 广播.*$//g'
192.168.1.44
把文件以;结尾的改成以!结尾。
cat test.c | grep ';' | sed 's/\;$/\!/g'
在文件最后一行加入字符串:
cat test.c | sed '$a # hello'