Linux: sed命令的使用

sed是linux下一个非常好用的流式编辑器(stream editor), 它通过一边传输一边过滤的方式来对文本进行编辑,我们可以对指定内容进行排除/选择/替换/删除/增加等操作,同时可以配合正则表达式来使用.sed是以行为单位进行处理的,可以利用管道设置进行多个sed串接处理.这样,只要从管道的一头输入原始文本,从另一头就可以输出得到我们所需要的数据和格式了.sed只是对输出流进行了处理,原始的文件可以保持不变.

总结一下常用的sed命令, 以方便复习.

1. sed对文本行的过滤和处理
sed -n '5p' test.txt           输出第5行 (-n 仅显示处理后的结果 -p 打印(输出)处理后的行)
sed -n '1,10p' test.txt       输出1-10行 
sed '2,3d' test.txt        删除2-3行
sed '/12345/p' test.txt        仅输出包含了12345的行
sed '/^abc/p' test.txt        仅输出以abc开头的行
sed '/abc$/p' test.txt        仅输出以abc结尾的行

2. sed命令替换功能, 一般格式: '(y或s)/ab/AB/(g)'  y-单个字符替换; s-字符串替换;  g-全局替换.  
'y/abc/ABC/':          将一个字符替换为另外一个字符, 即将行中的第一个a替换成A, 第一个b替换成B, ...
'y/abc/ABC/g':      将所有的a替换成A, 所有的b替换成B, ...
's/abc/ABC/':          将一个字符串替换成另外一个字串, 即将行中的第一个abc替换成ABC.
's/abc/ABC/g':      将所有的abc替换成ABC.

3. sed命令提取字符串的功能, 一般格式: 's/\(..\)/\1/'  --提取行中第1个符合..所指定条件的字符串
sed -n 's/.*\(http:.*jpg\).*/\1/p' test.txt   提取行中包含http:....jpg部分的内容,并输出. (显示有误,查看源码)

4. sed多个表达式一起执行, 可以用'-e'或者';'分隔开.
sed -e 's/12345/abcde/g' -e '1,3d' test.txt    先将所有12345替换成abcde,再删去1-3行
sed 's/12345/abcde/g; 1,3d' test.txt   (同上)

5.综合应用
有了以上铺垫,我们可以很容易从文本中过滤出我们需要的内容了:
比如:
 curl https://bing.ioliu.cn?p=100 | sed 's/h3/\n/g; s/src="/\n/g; s/?imageslim"/\n/g' | sed -n 's/^>\(.*\)<\/$/\1/p' 

....
伊吹山车道上的秋景,日本滋贺县米原市 (© The Asahi Shimbun/Getty Images)
奔跑中的柯尼克马,荷兰东法尔德斯普拉森自然保护区 (© Jim Brandenburg/Minden Pictures)
普卡基湖,新西兰南岛 (© Martin Heck/Nimia)
吐鲁番盆地鸟瞰图,中国 (© NASA)
美洲杉国家公园内的悬崖湖,美国加利福尼亚州 (© Caleb Weston/Getty Images)
慕尼黑啤酒节期间的摩天轮以及埃尔福特大教堂和圣西弗勒斯教堂的景象 (© Hans P. Szyszka/age fotostock)
【今日秋分】清晨以风筝为伴晨跑中的人,中国上海 (© Kiszon Pascal/Getty Images)
多利草地荒野内熊岩保护区的秋景,美国西弗吉尼亚州 (© Anthony Heflin/500px)
普罗奇达岛,意大利那不勒斯湾 (© Frank Chmura/age fotostock)
罗滕伯格园内的葡萄园,德国巴登-符腾堡州 (© Werner Dieterich/plainpicture)
柯库布里的雀鹰,苏格兰 (© Ray Cooper/Solent News/REX/Shutterstock)
瓜伊哈纳斯国家公园保留地和海达文物古迹内的一条森林溪流,加拿大不列颠哥伦比亚省 (© Robert Postma/plainpicture)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Midas-Zhou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值