关于awk的范围模式功能问题
关于awk的范围模式功能问题
man awk中这样写到
The pattern1, pattern2 form of an expression is called a range pattern. It matches all input records starting with a record that matches pattern1, and continuing until a record that matches pattern2, inclusive. It does not combine with any other sort of pattern expression.
表达式的pattern1,pattern2形式称为范围模式。 它匹配所有输入记录,从与pattern1匹配的记录开始,并持续到与pattern2匹配的记录(包括)。 它不与任何其他类型的模式表达式组合。
[root@localhost ~]# awk '/aaa/,/bbb/{print}' file
aaa
grge
ddd
bbb
aaa gege
ccc
bbb
aaa gregeg
eee
bbb
这里的/bbb/并没有起作用,执行了从/aaa/一直匹配到最后一行
[root@localhost ~]# awk '/aaa/,/ccc/{print}' file
aaa
grge
ddd
bbb
aaa gege
ccc
aaa gregeg
eee
bbb
这里/ccc/并没有起作用,跟/bbb/一样,","起作用了,但/bbb/没有匹配到结果
按照awk的man文档说明,awk '/aaa/,/bbb/' file结果应该是
aaa
grge
ddd
bbb
可是这里的结果却是到最后一行,是不是/bbb/这个pattern并没有匹配到
[root@localhost ~]# seq 9 | awk /3/,/7/
3
4
5
6
7
当每行内容不同,awk的范围模式能正确执行
[root@localhost ~]# seq 10 | awk /1/,/7/
1
2
3
4
5
6
7
10
当有重复行时,范围模式会将重复结果显示
以上是我遇到的一些疑惑,询问了大神,得到下面的解释
# awk '/aaa/,/bbb/{print}' file
aaa
grge
ddd
bbb
aaa gege
ccc
bbb
aaa gregeg
eee
bbb
[root@localhost ~]# awk '/aaa/,/ccc/{print}' file
aaa
grge
ddd
bbb
aaa gege
ccc
aaa gregeg
eee
bbb
$ seq 20 | awk '/3/,/7/{print}'
3
4
5
6
7
13
14
15
16
17
$ seq 15 | awk '/3/,/7/{print}'
3
4
5
6
7
13
14
15
$ seq 15 | awk '/1/,/2/{print}'
1
2
10
11
12
13
14
15
$ seq 23 | awk '/1/,/2/{print}'
1
2
10
11
12
13
14
15
16
17
18
19
20
21
这里的最后一行匹配结果有点意外,在同一行里,有1,也有2,并且2在前面,但还是匹配到了;猜测awk在同一行使用范围匹配时不分顺序
总结一下,awk的范围模式其实很好用的,但有多行内容重复时,结果就要注意了,awk将进行全文匹配
还有就是awk的范围模式其实sed也有,但这两者有区别,awk的范围匹配能将同一行结果匹配,但sed不能匹配同一行的内容
关于awk的范围模式功能问题的更多相关文章
- 制作类似ThinkPHP框架中的PATHINFO模式功能
一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...
- 制作类似ThinkPHP框架中的PATHINFO模式功能(二)
距离上一次发布的<制作类似ThinkPHP框架中的PATHINFO模式功能>(文章地址:http://www.cnblogs.com/phpstudy2015-6/p/6242700.ht ...
- Android护眼模式功能小记
最近自己在做一个小说阅读器,看到某阅有护眼模式功能,别人都有,我怎么能没有? 现在这功能已经不稀奇了,很多手机都带有这个功能. 实现起来不难,用一个蒙版遮在界面上面就行. 至于蒙版,可以用Window ...
- awk的批量replace功能
awk的批量replace功能 需求 现在需要替换一个文本 文本内容如下 $cat file MD_D1TS_1_060_I MD_D1TS_1_061_F MD_D1TS_1_062_U MD_D1 ...
- awk -f program.file 功能使用
一.awk -f program.file 功能使用 一直没有使用过awk的-f功能,感觉鸡肋,不是很实用,更多的是因为没有需求的原因 下面介绍下awk -f的使用方法 awk可以指定默认的文件路径, ...
- Exchange模式功能
Exchange模式: Outlook中的投票功能: 新建邮件--选项--使用投票按钮
- awk 的 pattern(模式)
我们知道, awk程序由一系列 pattern 以及与之对应的 action 组成的 rule 组成,rule之间用";"分号隔开, 一条输入记录与 pattern 匹配则执行与之 ...
- (转)关于 awk 的 pattern(模式)
本文转自chinaunix http://bbs.chinaunix.net/thread-4246512-1-1.html 作者reyleon 我们知道, awk程序由一系列 pattern 以 ...
- Ionic3学习笔记(十)实现夜间模式功能
本文为原创文章,转载请标明出处 目录 创建主题样式 导入 variables.scss 创建 provider 创建 page 在 App 入口处应用主题 效果图 1. 创建主题样式 在 ./src/ ...
随机推荐
- bzoj 1935: [Shoi2007]Tree 园丁的烦恼
Description 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草.有一天国王漫步在花园里,若有所思,他问一个园丁道: ...
- bzoj4332;vijos1955:JSOI2012 分零食
描述 这里是欢乐的进香河,这里是欢乐的幼儿园. 今天是2月14日,星期二.在这个特殊的日子里,老师带着同学们欢乐地跳着,笑着.校长从幼儿园旁边的小吃店买了大量的零食决定分给同学们.听到这个消息,所有同 ...
- 换行符 '\n' 和 回车符 '\r' 的区别?
顾名思义: 换行符就是另起一新行,光标在新行的开头: 回车符就是光标回到一旧行的开头:(即光标目前所在的行为旧行) ------------------------------------------ ...
- Kubernetes存储之Persistent Volumes简介
简介 管理存储和管理计算有着明显的不同.PersistentVolume子系统给用户和管理员提供了一套API,从而抽象出存储是如何提供和消耗的细节.在这里,我们介绍两种新的API资源:Persiste ...
- 安装Ubuntu16.04失败
原本安装的是Ubuntu14,但是在使用caffe时总是出错,所以干脆将Ubuntu从14升级到16,结果整出一堆麻烦.在解决这些麻烦的过程也学习了不少系统启动的细节.印证了那句话"如何没有 ...
- RegExp对象的三个方法
RegExp 对象有 3 个方法:test().exec() 以及 compile(). test( ) test()方法检索字符串中的指定值.返回值是true或false. 例子: 因为字符 ...
- c++---天梯赛---查验身份证
★题目: ★题目分析:本题要求输入一个数字n,随后n行输入n个身份证号码.之后进行进一步的判断把错误的身份证号码输出.如果全部正确输出All passed. ★思路方法: ①按题目要求输入. ②对前1 ...
- windows server 2008使用nginx转发API异常解决办法
公司比较传统,一直使用的JSP做项目,没有遇到过跨域问题. 最近因为公司接到一个微信spa项目,因为考虑到项目需要调用老接口,斗胆选择nginx(1.12.1)做接口转发服务, 开发环境使用的win1 ...
- SVN版本库修改URL路径或者IP地址
服务器的IP地址或者URL变更,版本库服务器的IP也要修改,因为当初安装SVN URL没有使用别名,所以使用的人都要修改客户端的IP,以下是参考网上的资料. 1.Windows TortoiseSVN ...
- DEDECMS点击主栏目默认显示第一个子栏目列表的方法
本文实例讲述了DEDECMS点击主栏目默认显示第一个子栏目列表的方法.分享给大家供大家参考.具体分析如下: 今天公司有个需求是,点击导航上的父栏目进去默认显示第一个子栏目的列表,以下是具体实现方法,可 ...