提取文本中两匹配行间内容(非贪婪)使用awk,sed,grep或perl

我有文本内容如下#BaseMean123678..........#Tile#somethingelse...........#BaseMean698321abc....... 我有文本内容如下
#Base Mean

1 2 3
6 7 8
..........
#Tile
#something else
...........

#Base Mean
6 9 8

3 2 1
a b c
.......
#Tile
#else
....
#Base Mean
......
#Tile
.....
分割===================================
想法,提取匹配#Base 和# Tile 之间内容,非贪婪匹配,求大神帮忙?
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
良玉小帝
2015-08-22 · 个人日常精心汇总合集
良玉小帝
采纳数:5925 获赞数:9451

向TA提问 私信TA
展开全部
shell很方便
start=0
while read line
do
if [ `echo $line|grep Base|wc -l` -eq 1 ];then

start=1

continue

fi

if [ `echo $line|grep Title|wc -l` -eq 1 ];then

start=0

continue

fi

if [ $start -eq 1 ];then

echo $line

fi

done<file
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
albumin
2015-08-15 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2386万
展开全部
awk  '/#Base[ \t]+Mean/,/#Tile/' filename
追问
谢谢您的意见,但问题仍然存在,因为我的问题是匹配每对#base 和#Tile 间内容,不是第一个#base 和最后一个#Tile ,不过再次感谢您的意见,也希望您给出进一步建议~~
追答
我试了n遍,都是打印第一个#Base Mean 和第一个#Tile之间的内容
然后打印第二个#Base Mean 和第二个#Tile之间的内容。
不存在从第一个#Base Mean一直打印到最后一个#Tile
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式