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