这两个标记之间出现过滤文本 [英] Filter text which appears between two marks

查看:131
本文介绍了这两个标记之间出现过滤文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

第1部分

什么是创建一个文本过滤器,其输出仅由两个predefined括起来的文本的最简单方法。我不介意使用任何标准的工具:用sed,awk中,蟒蛇,...

例如,我想只有马克开始和马克结束出现包围的文本。

 输入:
文字1
马克开始
文字2
马克结束
文字3
马克开始
4文本
马克结束
4文本输出:
文字2
4文本

第2部分

如何能在溶液被修改,使得只有最后一次出现将被写入到输出,所以对于上述相同的输入,我们得到:

 输出:
4文本


解决方案

  $ awk的'/马克结束/ {F = 0} /马克开始/ {F = 1;接下来} F到'文件
文字2
4文本$ awk的'/马克结束/ {F = 0} /马克开始/ {F = 1;接下来} F到{P = $ 0} END {打印p}'文件
4文本

Part 1

What is the easiest way to create a text filter which outputs only text surrounded by two predefined marks. I don't mind using any standard tool: sed, awk, python, ...

For example, i would like only the text surrounded by "Mark Begin" and "Mark End" to appear.

input:
Text 1
Mark Begin
Text 2
Mark End
Text 3
Mark Begin
Text 4
MarK End
Text 4

output:
Text 2
Text 4

Part 2

How can the solution be modified so that only the last occurrence will be written to output, so for the same input above, we get:

output:
Text 4

解决方案

$ awk '/Mark End/{f=0}/Mark Begin/{f=1;next}f' file
Text 2
Text 4

$ awk '/Mark End/{f=0}/Mark Begin/{f=1;next}f{p=$0}END{print p}' file
Text 4

这篇关于这两个标记之间出现过滤文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆