免费注册 查看新帖 |

Chinaunix

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

用sed处理三行的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-10 22:19 |只看该作者 |倒序浏览
有一个文件像这样:
.......
.......
hello .....
         ni......
              hao......
hallo.....
hell.....
holl.....
....
.....
如何用sed匹配并打印:下面的行开头是空格的行,直到遇到开头不是空格的行?
就是这样的行:
hello .....
         ni......
              hao......

论坛徽章:
0
2 [报告]
发表于 2010-04-10 23:08 |只看该作者
本帖最后由 lkk2003rty 于 2010-04-11 00:55 编辑

回复 1# 树上开花


为什么一定要用sed
用grep不行么?
  1. grep -B1 "^ " file
复制代码
sed的话 这个写得比较挫
  1. sed -n -r ':a;N;/(\n |^ )/P;D;ta'  file
复制代码

论坛徽章:
0
3 [报告]
发表于 2010-04-11 16:00 |只看该作者
不用那么麻烦这样就可以
sed -n  '/  */{N;D}'

论坛徽章:
0
4 [报告]
发表于 2010-04-11 17:15 |只看该作者
awk '/^  */' yourfile

论坛徽章:
0
5 [报告]
发表于 2010-04-11 18:15 |只看该作者
awk '/^  */' yourfile
iori809 发表于 2010-04-11 17:15


“如何用sed匹配并打印:下面的行开头是空格的行,直到遇到开头不是空格的行?”

感觉楼主是 希望匹配到某个条件(如hello) ,然后将这行以后的开头是空行的打印出来。

当然楼主的描述还是不清楚,有歧义的。

论坛徽章:
0
6 [报告]
发表于 2010-04-12 01:42 |只看该作者
楼上的说得对啦,我要的是非空格行,下面的行如果不是以空格开头的话,就要一起打印出来
因为这两行会有关系,前面描述不清,不好意思

论坛徽章:
0
7 [报告]
发表于 2010-04-12 08:25 |只看该作者
2楼的是正解,谢谢!

论坛徽章:
0
8 [报告]
发表于 2010-04-12 08:29 |只看该作者
  1. awk '/^[^ ]/{T=0}/^ /&&!T{T=1;if (l) print l}{l=$0}T' file
复制代码

论坛徽章:
0
9 [报告]
发表于 2010-04-12 08:36 |只看该作者

  1. sed -n ':b;N;/\n \+[^ ]\+/!D;:a;p;n;/^ \+[^ ]\+/ba;bb' 数据文件

  2. 这段代码的目的是发现某行(不以空格开头)的下面一行是以空格开头(但不全是空格-即空行),就显示该行及下面连续的以空格开头的行

  3. /\n \+[^ ]\+/  
  4. /^ \+[^ ]\+/  这两个正则是判断是否是以空格开头的有效行(不全是空格)

复制代码

论坛徽章:
0
10 [报告]
发表于 2010-05-09 13:50 |只看该作者
回复 2# lkk2003rty


    写的不错~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP