如何从linux中两个相似字符串之间的文件中提取文本?

时间:2014-06-28 08:20:25

标签: linux unix sed

我有一个包含以下文字的文件

Jun  9 2014
some text...
Jun 10 2014
some text...
some text...
Jun 10 2014
some text...
Jun 10 2014
some text...
Jun 11 2014
some text...
Jun 12 2014
some text...

我尝试使用这样的sed命令:

sed /"Jun 10 2014"/,/"Jun 10 2014"/p file_name.txt

但这只会在第一个和第二个字符串2014年6月10日之间提供文本

我想提取2014年6月10日第一次出现的字符串到2014年6月10日相同字符串的最后一次出现之间的所有文本,包括2014年6月10日到2014年6月11日之前的文本。

2 个答案:

答案 0 :(得分:0)

您可以使用Jun 10 2014Jun 11 2014的范围,但可以在其中进行额外的过滤:

$ sed -n '/Jun 10 2014/,/Jun 11 2014/ {/Jun 1[01] 2014/!p}' file_name.txt
some text...
some text...
some text...
some text...

答案 1 :(得分:0)

以下是awk解决方案:

awk '/^Jun 10/ {f=1} /^Jun/ && !/^Jun 10/ {f=0} f && !/^Jun/' file
some text...
some text...
some text...
some text...

Jun 10打印到不再Jun 10