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

本原创文章属于《Linux大棚》博客,博客地址为http://roclinux.cn。文章作者为rocrocket。
为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅。
===
[正文开始]
上文接:《sed的流艺术之一》-linux命令五分钟系列之二十一
5 sed中有选项么?有没有什么比较常用的?
sed最主要的就是command部分,把这部分玩转了,你就已经很厉害了,而玩转这部分的前提是玩转正则表达式。尽管如此,sed的选项部分的-n选项仍然是非常重要,理解了它,对于你提高sed水平也是至关重要。
前面提到,sed会将模式空间里的行经过处理后输出到标准输出,这是默认的处理方式。就是说,除非你使用d命令来删除此行,否则它无论变成什么样子,无论它被替换成什么形状,它都会多多少少被输出到屏幕上。前面的例子可以证明这一切。你不信?给你个最能说明问题的例子:
[rocrocket@rocrocket programming]$ cat roc.txt
1
2
3
4
5
[rocrocket@rocrocket programming]$ sed ‘/4/p’ roc.txt
1
2
3
4
4
5
看,除了所有的原始内容都被输出来了,而且含有字符4的行被重复输出了一遍。这就是sed的工作原理,它会不问青红皂白的先把原始行输出来,然后再执行后面的动作,在这里我们设定了p,表示打印此行。这种输出结果不是我们想要的,我们其实想要的是只输出含有4的行。
这时,如果你使用了-n选项,你会发现,结果如你所愿了:
[rocrocket@rocrocket programming]$ sed -n ‘/4/p’ roc.txt
4
选项-n告诉sed,除非是明确表明要输出的行,否则不要给我胡乱输出。(这回你知道-n的厉害了吧^_^)
-n一般会和-p配合使用,意思是说输出那些发生变化的行。
6 command部分感觉很复杂,能给稍微总结一下么?
command部分是这样,可以分为两部分,一部分是确定范围部分,一部分是处理方式部分。
确定范围部分可以分为两种方式:
1 指定行数:例如3,5表示第3、第4和第5行;5,$表示第5行至最后一行;
2 用模式匹配进行指定:例如/^[^dD]/表示匹配行首不是以d或D开头的行等等。
处理方式部分呢,有很多命令可用,介绍几个最常用的吧:
d:表示删除行
p:打印该行
r:读取指定文件的内容
w:写入指定文件
a\:在下面插入新行新内容
7 再举几个例子吧,给点经典的sed应用。
例一 显示test文件的第10到20行:sed -n ‘10,20p’ test
例二 将所有以d或D开头的行的所有小写x变为大写X:sed ‘/^[dD]/s/x/X/g’ test
例三 删除每行最后的两个字符:sed ‘s/..$//’ test
(有人会问用sed ‘/..$/d’ test为什么不行? 这是因为/..$/表示匹配所有末尾含有两个字符的行,然后删除这样的行,显然这是错误的)
例四 删除每一行的前两个字符:sed ‘s/..//’ test
未完待续:《sed的流艺术之三》-linux命令五分钟系列之二十三
《sed的流艺术之二》-linux命令五分钟系列之二十二的更多相关文章
- 《sed的流艺术之四》-linux命令五分钟系列之二十四
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- 《sed的流艺术之三》-linux命令五分钟系列之二十三
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- 《sed的流艺术之一》-linux命令五分钟系列之二十一
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- 《paste命令》-linux命令五分钟系列之二十
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- 《vi中的替换艺术》-linux命令五分钟系列之十一
vi方面的内容不知道分类到哪里好,就放到<Linux命令五分钟系列>里吧! 今天编程,关于栈的一个小例子,其间我需要把”S.”替换为”S->”(替换不包括双引号). 其实这个不难,不 ...
- 《sort帮你排序》-linux命令五分钟系列之二十六
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- 《gzip命令》-linux命令五分钟系列之七
本原创文章属于<Linux大棚>博客. 博客地址为http://roclinux.cn. 文章作者为roc 希望您能通过捐款的方式支持Linux大棚博客的运行和发展.请见“关于捐款” == ...
- 《作业控制系列》-“linux命令五分钟系列”之十
本原创文章属于<Linux大棚>博客. 博客地址为http://roclinux.cn. 文章作者为roc 希望您能通过捐款的方式支持Linux大棚博客的运行和发展.请见“关于捐款” == ...
- 《tr命令-优化版》-linux命令五分钟系列之二十五
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
随机推荐
- Spark源码的编译过程详细解读(各版本)
说在前面的话 重新试多几次.编译过程中会出现下载某个包的时间太久,这是由于连接网站的过程中会出现假死,按ctrl+c,重新运行编译命令. 如果出现缺少了某个文件的情况,则要先清理maven(使用命 ...
- IE-首页跳转到 q160的问题解决
IE首页跳转到 q160的问题解决 服了又中找了,IE快捷方式被 www.q160.com劫持 该死的这个网站什么也没有做,就是做了一个google搜索的连接. 进行了一次搜索 http: ...
- A Tour of Go Struct Fields
Struct fields are accessed using a dot. package main import "fmt" type Vertex struct { X i ...
- android 处理图片之--bitmap处理
-2.从资源中获得bitmap Resources res=getResources(); Bitmap bmp=BitmapFactory.decodeResource(res, R.drawabl ...
- GPUImage的简单使用
GPUImage 是一个开源的图像处理库,提供了非常多的滤镜效果来加工图片.GPUImage 并不像一般的第三方库可以直接拖入到工程中使用,而是需要先在本地编译,然后将编译后的文件拖入到工程中使用.配 ...
- Bootstrap-风格的下拉按框:Bootstrap Select
Bootstrap Select 是一个jQuery插件,提供了Bootstrap 风格的下拉选择框.拥有许多自定义的选项,可多选. 效果图: 源代码: <select class=" ...
- 在Spring中使用JDK定时器实现调度任务
在Spring中使用JDK定时器实现调度任务 作者:chszs,转载需注明.博客主页: http://blog.csdn.net/chszs 本文探讨Spring如何集成JDK的Timer定时器,实现 ...
- android点滴之标准SD卡状态变化事件广播接收者的注冊
眼下最完整的,须要注冊的动作匹配例如以下: IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED); int ...
- android颜色对应的xml配置值,颜色表
网上找的一些颜色值 XML配置 <?xml version="1.0" encoding="utf-8" ?> <resources> ...
- Ubuntu设置目录的读写权限(Linux命令chmod 777 dirName)
更改文件所有者 sudo chown system_username /location_of_files_or_folders 更改文件的权限 鼠标右按钮点击文件/目录 -> 属性 权限 分页 ...