免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5478 | 回复: 15
打印 上一主题 下一主题

如何用awk显示出现在两个模式之间的内容  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2002-08-28 15:27 |只看该作者 |倒序浏览
[这个贴子最后由valentine在 2002/08/29 09:10am 编辑]

$awk '/[Ss]un/,/[Mm]oon/ {print}' myfile

这条命令应该显示第一个匹配Sun或sun的行与第一个匹配Moon或moon的行之间的行,并显示到标准输出上。但不知为什么我用的时候,却将myfile中所有匹配Sun或sun的行与匹配Moon或moon的行之间的行都显示出来了,请斑竹帮我查查。

论坛徽章:
1
巳蛇
日期:2014-12-29 11:22:41
2 [报告]
发表于 2002-08-28 15:33 |只看该作者

如何用awk显示出现在两个模式之间的内容

呵呵,你的理解错了
,表示的是一个范围
你想干的是
$awk '/[Ss]un/ {print} /[Mm]oon/ {print} ' myfile

论坛徽章:
0
3 [报告]
发表于 2002-08-28 15:37 |只看该作者

如何用awk显示出现在两个模式之间的内容

我想显示第一个匹配Sun或sun的行与第一个匹配Moon或moon的行之间的行,请问该怎么做?

论坛徽章:
1
巳蛇
日期:2014-12-29 11:22:41
4 [报告]
发表于 2002-08-28 15:46 |只看该作者

如何用awk显示出现在两个模式之间的内容

抱歉,我搞错了
$awk '/[Ss]un/ {print} /[Mm]oon/ {print&#59; if($0 ~ /[Mm]oon/) exit} ' myfile

论坛徽章:
0
5 [报告]
发表于 2002-08-28 15:53 |只看该作者

如何用awk显示出现在两个模式之间的内容

$ cat awktt
Suntest
suntestdd
atest
btest
ctest
Moontest
moontest
ktest
jtest
我想 yisite  的意思是只想显示 suntestdd 和 Moontest 之间的行 吧?
suntestdd
atest
btest
ctest
Moontest

论坛徽章:
0
6 [报告]
发表于 2002-08-28 16:08 |只看该作者

如何用awk显示出现在两个模式之间的内容

ahyan说得对,我就是这个意思。

论坛徽章:
0
7 [报告]
发表于 2002-08-29 09:07 |只看该作者

如何用awk显示出现在两个模式之间的内容

[这个贴子最后由valentine在 2002/08/29 02:22pm 编辑]

/pattern1/,/pattern2/ 这种用法并没有说是指第一次出现在两个模式之间.在awk和sed下,
如果模式2(pattern2)不出现,都会显示所有行.
其实,自己变通一下,解决起来也很简单:

awk -vflag=0 '{if(flag==1)print}/pattern1/{flag=1&#59;print}&#59;/pattern2/{exit}' filename
便可以实现只显示第一次出现在两个模式之间的内容了.  
bjchenxu的写法更简单一些.    

论坛徽章:
1
巳蛇
日期:2014-12-29 11:22:41
8 [报告]
发表于 2002-08-29 10:05 |只看该作者

如何用awk显示出现在两个模式之间的内容

唉,又错了
$awk '/[Ss]un/,/[Mm]oon/ {print&#59; if($0 ~ /[Mm]oon/) exit} ' myfile

论坛徽章:
0
9 [报告]
发表于 2002-08-29 14:36 |只看该作者

如何用awk显示出现在两个模式之间的内容

假如我有一个文件,内容为 :
11111
22222
33333
33333
44444
55555
66666
66666
77777
88888
我想显示11111到第一个33333之间的内容,还有44444到第一个66666之间的内容,我按斑竹的办法:
awk -vflag=0 '{if(flag==1)print}/11111/{flag=1&#59;print}&#59;/33333/{exit}' filename > test1
awk -vflag=0 '{if(flag==1)print}/44444/{flag=1&#59;print}&#59;/66666/{exit}' filename > test2
可是只有test1有东西,而test2是空的。请斑竹帮忙

论坛徽章:
1
巳蛇
日期:2014-12-29 11:22:41
10 [报告]
发表于 2002-08-29 14:43 |只看该作者

如何用awk显示出现在两个模式之间的内容

用我的方法试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP