Awk 增量拆分文件

Awk 增量拆分文件,awk,sed,split,Awk,Sed,Split,我想以增量方式拆分文件。我的文件看起来像: $path { $name "path_sparc_ifu_dec_1" ; $transition { "dtu_inst_d[22]" v ; // (in) "U622/Y" ^ ; // (INVX16_LVT) "U870/Y" ^ ; // (AND2X1_LVT) "U873/Y" v ; // (INVX1_LVT) "U872/Y" ^ ; // (NAN

我想以增量方式拆分文件。我的文件看起来像:

$path {
$name "path_sparc_ifu_dec_1" ;
$transition {
"dtu_inst_d[22]"    v   ;   //  (in)
"U622/Y"    ^   ;   //  (INVX16_LVT)
"U870/Y"    ^   ;   //  (AND2X1_LVT)
"U873/Y"    v   ;   //  (INVX1_LVT)
"U872/Y"    ^   ;   //  (NAND3X0_LVT)
"U1045/Y"   v   ;   //  (NAND3X0_LVT)
"U1046/Y"   ^   ;   //  (NAND3X0_LVT)
"U1063/Y"   ^   ;   //  (OR3X1_LVT)
"U1092/Y"   ^   ;   //  (OR3X1_LVT)
"U1095/Y"   ^   ;   //  (OA21X1_LVT)
"illinste_ff_q_reg_0_/D"    ^   ;   //  (DFFX1_LVT)
}
}
$path {
$name "path_sparc_ifu_dec_2" ;
$transition {
"dtu_inst_d[22]"    ^   ;   //  (in)
"U622/Y"    v   ;   //  (INVX16_LVT)
"U870/Y"    v   ;   //  (AND2X1_LVT)
"U873/Y"    ^   ;   //  (INVX1_LVT)
"U872/Y"    v   ;   //  (NAND3X0_LVT)
"U1045/Y"   ^   ;   //  (NAND3X0_LVT)
"U1046/Y"   v   ;   //  (NAND3X0_LVT)
"U1063/Y"   v   ;   //  (OR3X1_LVT)
"U1092/Y"   v   ;   //  (OR3X1_LVT)
"U1095/Y"   v   ;   //  (OA21X1_LVT)
"illinste_ff_q_reg_0_/D"    v   ;   //  (DFFX1_LVT)
}
}
$path {
$name "path_sparc_ifu_dec_3" ;
$transition {
"dtu_inst_d[22]"    v   ;   //  (in)
"U622/Y"    ^   ;   //  (INVX16_LVT)
"U782/Y"    ^   ;   //  (AND2X1_LVT)
"U781/Y"    ^   ;   //  (AND2X1_LVT)
"U632/Y"    v   ;   //  (INVX0_LVT)
"U999/Y"    ^   ;   //  (NAND4X0_LVT)
"U1000/Y"   v   ;   //  (NAND2X0_LVT)
"U1006/Y"   ^   ;   //  (NAND4X0_LVT)
"U1007/Y"   ^   ;   //  (AND4X1_LVT)
"prope_ff_q_reg_0_/D"   ^   ;   //  (DFFX1_LVT)
}
}
.
.
.
我想有文件有“路径”增量。 第一个文件具有第1个路径。第二个文件具有第一和第二路径。第三个文件具有第1、第2和第3个路径。此增量拆分将持续到原始文件的末尾。(高达n)

P1:

P2:

P3:

你能告诉我怎么做这项工作吗?任何语言(sed、awk、grep)我都可以

最好的


Jaeyoung

我会使用
awk
。您可以使用记录分隔符,如下所示:

awk '{file="P"NR".txt";print > file;close(file)}' RS='}\n}\n' ORS='}\n}\n' file

gawk
去营救

$ awk -v RS="\n}\n}" 'NR==1{term=RT}
                           {a[NR]=$0}
           END{for(i=1;i<NR;i++) 
                  for(k=1;k<=i;k++) 
                     print a[k] term > FILENAME"_"i}' file
$awk-vrs=“\n}\n}”NR==1{term=RT}
{a[NR]=$0}
结束{for(i=1;i
$path {
$name "path_sparc_ifu_dec_1" ;
$transition {
"dtu_inst_d[22]"    v   ;   //  (in)
"U622/Y"    ^   ;   //  (INVX16_LVT)
"U870/Y"    ^   ;   //  (AND2X1_LVT)
"U873/Y"    v   ;   //  (INVX1_LVT)
"U872/Y"    ^   ;   //  (NAND3X0_LVT)
"U1045/Y"   v   ;   //  (NAND3X0_LVT)
"U1046/Y"   ^   ;   //  (NAND3X0_LVT)
"U1063/Y"   ^   ;   //  (OR3X1_LVT)
"U1092/Y"   ^   ;   //  (OR3X1_LVT)
"U1095/Y"   ^   ;   //  (OA21X1_LVT)
"illinste_ff_q_reg_0_/D"    ^   ;   //  (DFFX1_LVT)
}
}
$path {
$name "path_sparc_ifu_dec_2" ;
$transition {
"dtu_inst_d[22]"    ^   ;   //  (in)
"U622/Y"    v   ;   //  (INVX16_LVT)
"U870/Y"    v   ;   //  (AND2X1_LVT)
"U873/Y"    ^   ;   //  (INVX1_LVT)
"U872/Y"    v   ;   //  (NAND3X0_LVT)
"U1045/Y"   ^   ;   //  (NAND3X0_LVT)
"U1046/Y"   v   ;   //  (NAND3X0_LVT)
"U1063/Y"   v   ;   //  (OR3X1_LVT)
"U1092/Y"   v   ;   //  (OR3X1_LVT)
"U1095/Y"   v   ;   //  (OA21X1_LVT)
"illinste_ff_q_reg_0_/D"    v   ;   //  (DFFX1_LVT)
}
}
$path {
$name "path_sparc_ifu_dec_3" ;
$transition {
"dtu_inst_d[22]"    v   ;   //  (in)
"U622/Y"    ^   ;   //  (INVX16_LVT)
"U782/Y"    ^   ;   //  (AND2X1_LVT)
"U781/Y"    ^   ;   //  (AND2X1_LVT)
"U632/Y"    v   ;   //  (INVX0_LVT)
"U999/Y"    ^   ;   //  (NAND4X0_LVT)
"U1000/Y"   v   ;   //  (NAND2X0_LVT)
"U1006/Y"   ^   ;   //  (NAND4X0_LVT)
"U1007/Y"   ^   ;   //  (AND4X1_LVT)
"prope_ff_q_reg_0_/D"   ^   ;   //  (DFFX1_LVT)
}
}
awk '{file="P"NR".txt";print > file;close(file)}' RS='}\n}\n' ORS='}\n}\n' file
$ awk -v RS="\n}\n}" 'NR==1{term=RT}
                           {a[NR]=$0}
           END{for(i=1;i<NR;i++) 
                  for(k=1;k<=i;k++) 
                     print a[k] term > FILENAME"_"i}' file