Parsing 删除第一个标记之前和第二个标记之后的所有文本

Parsing 删除第一个标记之前和第二个标记之后的所有文本,parsing,bash,sed,awk,Parsing,Bash,Sed,Awk,因此,我正在编写一个脚本,我有一个文本文件,如下所示: blahblahblahdeleteme <!-- post --> This is the text I want to keep! Pick me!! <!-- post navigation --> more text please delete me I am not needed.... blahblahblahdeleteme 这是我想要保留的文本!选我!! 更多文字请删除我我不需要。。。。 我想

因此,我正在编写一个脚本,我有一个文本文件,如下所示:

blahblahblahdeleteme
<!-- post --> 
This is the text I want to keep! Pick me!!
<!-- post navigation --> 
more text please delete me I am not needed....
blahblahblahdeleteme
这是我想要保留的文本!选我!!
更多文字请删除我我不需要。。。。
<>我想删除第一个和最后一个部分(以及标记,如果容易的话),并将文本保持在中间。 现在,我知道bash通常不是解析像这样的文本的最佳工具,但是因为它很简单,我想我还是坚持使用bash为好。这像我认为的那样容易吗

我发现这个帖子:


我可以把它分成两个文本文件,然后再分成两个,只保留中间的一个。这是我最好的选择吗?请让我知道

awk中这将非常容易:

/^<!-- post -->/ { if (start != 1)
    { start=1; firstline=1;}
}

/^<!-- post navigation -->/ {start=0;}

{ if (start == 1 && firstline != 1)
  { print $0; }
  firstline=0;
}
/^/{if(start!=1)
{start=1;firstline=1;}
}
/^/{start=0;}
{if(start==1&&firstline!=1)
{打印$0;}
一线=0;
}
awk'/
sed'1,//d;//$d'文件
  • 从第一行到第一个标记:删除
  • 从第二个标记到文件结尾($)删除

您不能编写一个使用正则表达式的简单java程序吗?如果您对标记非常具体,那么编写关联应该非常简单:
awk '/<\!-- post --/,/<\!-- post navigation/' file
sed '1,/<!-- post -->/d;/<!-- post navigation -->/,$d' file