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