Linux 多次访问UNIX中特定单词之间的文本

Linux 多次访问UNIX中特定单词之间的文本,linux,shell,unix,sed,Linux,Shell,Unix,Sed,如果文件如下所示: ram_file abc 123 end_file tony_file xyz 456 end_file bravo_file uvw 789 end_file 现在我想同时访问ram_文件和end_文件,tony_文件&end_文件和bravo_文件之间的文本。我尝试了sed命令,但我不知道如何在该命令中指定*\u文件 提前感谢这个awk应该可以帮你完成这项工作 此解决方案威胁将end_文件作为块的结束,将所有其他xxxx_文件作为块的开始。 它不会打印文本块之间有一些,

如果文件如下所示:

ram_file
abc
123
end_file
tony_file
xyz
456
end_file
bravo_file
uvw
789
end_file
现在我想同时访问
ram_文件
end_文件
tony_文件
&
end_文件
bravo_文件
之间的文本。我尝试了
sed
命令,但我不知道如何在该命令中指定
*\u文件


提前感谢

这个
awk
应该可以帮你完成这项工作

此解决方案威胁将
end_文件
作为块的结束,将所有其他
xxxx_文件
作为块的开始。
它不会打印文本块之间有一些,就像在我的示例中,
不要打印此

awk '/end_file/{f=0} f; /_file/ && !/end_file/ {f=1}' file
abc
123
xyz
456
uvw
789

如果您喜欢某些格式,可以使用
awk

awk -F_ '/end_file/{printf (f?RS:"");f=0} f; /file/ && !/end_file/ {f=1;print "-Block-"++c"--> "$1}' file
-Block-1--> ram
abc
123

-Block-2--> tony
xyz
456

-Block-3--> bravo
uvw
789

+1; 可能最好锚定
…\u文件
regex.+1:为了更好的解决方案,让我们删除我们的答案<代码>:P@jaypal-Uff,希望我没有让任何人感到不舒服,不是我的意图:)理解请求并不总是好的,可能需要一些时间才能让它好起来。@Jotne不,一点也不。昨天,有人帮我调试了一个超过3个小时的程序。我们的表演从几分钟降到了9秒。让人调试你的答案是一项艰巨的任务,因此我非常感激。只有当你尝试解决所有边缘场景时,你才能打开学习之门!干杯,谢谢!继续做好事!!
awk -F_ '/end_file/{printf (f?RS:"");f=0} f; /file/ && !/end_file/ {f=1;print "-Block-"++c"--> "$1}' file
-Block-1--> ram
abc
123

-Block-2--> tony
xyz
456

-Block-3--> bravo
uvw
789