学习sed -----鸟哥的linux私房菜 第三版

sed 本身是一个管道命令,可以分析标准输入,而且sed可以将数据进行取代、删除、新增等操作。

命令格式:sed -[nefr] [动作]

选项与参数:

-n :使用安静模式,只输出经过sed处理的那一行信息

-e:直接在指令列模式上进行sed的动作编辑

-f:直接将sed 的动作写入一个文件内, -f filename可以执行该文件内的动作

-r:支持扩展的正则表达式

-i:直接修改读取文件的内容,而不是由屏幕输出

动作说明:[n1[,n2]] function

n1,n2:不见得会存在,一般代表动作作用的行

function有底下这些:

a:新增,a的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)

c:取代,c的后面可以接字符串,这些字符串可以取代n1,n2之间的行

d:删除,d后面不接任何东西

i:插入,i的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行)

p:打印,将某个选择的数据印出,通常与参数sed -n一起出现

s:取代,可以直接进行取代工作,通常可以搭配正则表达式。


例题一:将/etc/passwd 的内容列出并且打印行号,同时,请将2-5行删除

# cat -n /etc/passwd | sed '2,5d'

例题二:在第二行后(即第三行)加上“drink tea?”

# cat -n /etc/passwd | sed '2a drink tea ?'

那在第三行前呢? sed '2i drink tea ?'

例题三:插入两行呢?

# cat -n /etc/passwd |sed '2a drink tea \

or drink beer'

注意:一定要分行写

例题四:整行取代,我想将2-5行的内容取代为“No 2-5 number”

# cat -n /etc/passwd | sed '2,5c No 2-5 number'

例题五:仅列出第5-7行

# cat -n  /etc/passwd | sed -n '2,7p'

注意,一定要加上参数 -n



例题六:取出本机ip地址:

#ifconfig | grep 'inet addr'|head -n 1|sed 's/^.*addr://g'|sed 's/B.*$//g'

其中^.addr:表示从行头到addr:,B.*$ 表示从字符B开始到行尾

例题七:删除注释

# cat filename | sed 's/#.*$//g'

例题八:删除空白行

#cat filename | sed '/^$/d'

例题九:在regular_express.txt文件末尾加入一行# hello world

#sed -i '$a #helloworld' regular_express.txt


例题十:处理/etc/passwd 为一个新的文件,方式为:删除第四行,第六行则替换成“no six line”

#cat /etc/passwd | sed -e '4d' -e '6c no six line' >passwd.new

注意,当一条sed语句中要进行两个及其以上个动作则需要在每个动作前加上参数 e


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值