本原创文章属于《Linux大棚》博客,博客地址为http://roclinux.cn。文章作者为rocrocket。

为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅。

===

[正文开始]

1 你想过sed为什么叫sed么?

sed是stream editor的缩写,sed就是一个流编辑器,说白了,就是我们往sed里输入一串信息,它给我们处理,然后输出来。就这么简单。

sed和cut类似,是一个面向行处理的工具,它以“行”为处理单位,处理后的结果会输出到标准输出。所以说其实sed命令很安全的,它不会对行本身所在文件做任何修改的。

sed的命令格式是:sed command file

其中,command部分是针对每行数据所做的处理(这部分很重要很重要,接着看,你会知道的),file是要处理的文件,如果忽略file参数,则sed会把标准输入作为处理对象。

2 sed的工作原理是什么?

sed会一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。

3 给个最最简单的sed命令的例子吧!让我先有个感性认识,呵呵。

[rocrocket@rocrocket programming]$ cat roc.txt
test 1
test2
testtest
XtestX
BBtest
[rocrocket@rocrocket programming]$ sed ‘/2/d’ roc.txt
test 1
testtest
XtestX
BBtest
此例子是利用sed来删除roc.txt文件里含有字符“2”的行。大家看到了,例子很简单,这个命令的command部分是/2/d,而且它是用单引号括起来的。你也一定要学着这样做,只要用到sed,别忘了用单引号将command部分括起来。

/2/d中的d表示删除,意思就是说只要某行含有字符2,则删除之。(你一定没忘记,sed所谓的删除都是在模式空间中执行的,而原文件roc.txt毫发无损)

4 想实现类似于cut -d : -f 1 /etc/passwd的效果,用sed怎么做呢?(cut用法参见《cut命令》-linux命令五分钟系列之十九

[rocrocket@rocrocket programming]$ head -n 5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

[rocrocket@rocrocket programming]$ head -n 5 /etc/passwd|sed ‘s/:.*$//’
root
bin
daemon
adm
lp

看到了吧,我们使用的command是’s/:.*$//’,其中的正则表达式s///是替换的经典格式,如果你不太了解,可以看看我之前的一篇博客专题文章,讲述的就是替换的艺术:《vi中的替换艺术》-linux命令五分钟系列之十一

未完待续:《sed的流艺术之二》-linux命令五分钟系列之二十二

《sed的流艺术之一》-linux命令五分钟系列之二十一的更多相关文章

  1. 《sed的流艺术之二》-linux命令五分钟系列之二十二

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  2. 《sed的流艺术之四》-linux命令五分钟系列之二十四

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  3. 《sed的流艺术之三》-linux命令五分钟系列之二十三

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  4. 《vi中的替换艺术》-linux命令五分钟系列之十一

    vi方面的内容不知道分类到哪里好,就放到<Linux命令五分钟系列>里吧! 今天编程,关于栈的一个小例子,其间我需要把”S.”替换为”S->”(替换不包括双引号). 其实这个不难,不 ...

  5. 《paste命令》-linux命令五分钟系列之二十

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  6. 《sort帮你排序》-linux命令五分钟系列之二十六

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  7. 《tr命令-优化版》-linux命令五分钟系列之二十五

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  8. 《sort命令的k选项大讨论》-linux命令五分钟系列之二十七

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  9. 《service》-“linux命令五分钟系列”之二

    本原创文章属于<Linux大棚>博客. 博客地址为http://roclinux.cn. 文章作者为roc 希望您能通过捐款的方式支持Linux大棚博客的运行和发展.请见“关于捐款” == ...

随机推荐

  1. MySQL 数据库中用户表中口令登陆设置

    工具:MyEclipse8.5.apache-tomcat-6.0.43.MySQL5.6 问题:项目是同事发给我,正常运行之后,使用MySQL表里的管理员数据登陆时,提示“仅限于非总部工号登录!” ...

  2. eclipse老是卡在Refreshing workspace

    最近老是遇到eclipse没有响应,参考网络上的相关帖子做了些优化,但问题依旧. 后来发现出现这个问题一般都是eclipse无响应,直接结束进程后导致的,看了下eclipse日志,果真如此. !SES ...

  3. POJ 1179 IOI1998 Polygon

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5472   Accepted: 2334 Description Polyg ...

  4. SVN eclipse插件错误

    部分文章转载自:http://www.bkjia.com/ASPjc/1015687.html 出现如下问题该怎么做: 1.在Windows--Preferences--Team--SVN--接口换成 ...

  5. BAPI

    MM模块 1. BAPI_MATERIAL_SAVEDATA 创建物料主数据 注意参数EXTENSIONIN的使用,可以创建自定义字段 例如:WA_BAPI_TE_MARA-MATERIAL = IT ...

  6. ZooKeeper场景实践:(6)集群监控和Master选举

    1. 集群机器监控 这通经常使用于那种对集群中机器状态,机器在线率有较高要求的场景,可以高速对集群中机器变化作出响应.这种场景中,往往有一个监控系统,实时检測集群机器是否存活. 利用ZooKeeper ...

  7. Jquery 常用总结

    获取元素的宽度:    如果用$(ele).attr("width")获取的值不带px    如果用$(ele).css("width")获取的值带px //获 ...

  8. 菜单类(CCMenu,CCMenuItem)

  9. fedora 23 安装genymotion解决方案

    由于学习android开发,都说genymotion模拟器给力,我就尝试了下,安装过程参考 :但出现这种错误:缺少库 libjpeg.so.8 ,我就各种goole和百度找到库(链接地址),解压之后放 ...

  10. sea.js 学习

    开篇:终于学习了sea.js的使用了,因为它是一个模块加载工具,所以首先要了解javascript的模块编程,然后对sea.js的了解和使用 javascript 模块编程 为什么要模块化编程,为了让 ...