perl - 使用 perl 或任何方法将搜索模式之间的所有行打印到不同的文件中

标签 perl bash shell sed awk

有人可以帮忙解决这个问题吗 我想将搜索模式(STARTEND)之间的所有行打印到不同的文件(new_file_name 可以是提供的任何增量名称)

但是搜索模式在文件中重复,因此每次找到该模式时,都应该将黑白行转储到不同的文件中

文件是这样的

START --- ./body1/b1
##########################

123body1
abcbody1

##########################
END --- ./body1/b1

START --- ./body2/b2
##########################

123body2
defbody2

##########################
END --- ./body2/b2

最佳答案

perl 解决方案,

perl -MFile::Basename -MFile::Path -ne '
  ($a) = /^START.+?(\S+)$/;
  $b = /^END/; 
  $a..$b or next; 
  if ($a){ mkpath(dirname $a); open STDOUT,">",$a; }
  $a||$b or print;
' file

关于perl - 使用 perl 或任何方法将搜索模式之间的所有行打印到不同的文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18200981/

相关文章:

linux - 用第一行填充空行

Linux 复制目录但名称不同?

linux - 我如何从 linux shell 脚本解析 yaml 文件

Android:使用 ADB shell 读取 APN

c++ - 在 C++ 和 Perl 之间使用的 YAML

perl - 我应该如何在Inline::C中创建并返回一个arrayref?

perl - 获取模块中明确定义的方法/函数列表

linux - 从 bash 脚本文件中查找没有目录和扩展名的文件名

bash - 循环遍历使用参数指定的目录中的文件

perl - LWP 与 libwww-perl 相同吗?