2016-03-23 68 views
0

我想遞增分割文件。我的文件看起來像:遞增分割文件

$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) 
} 
} 
. 
. 
. 

我想有增量式「路徑」的文件。 第一個文件具有第一個路徑。第二個文件有第一和第二個路徑。第三個文件有第一,第二和第三個路徑。該增量分割將在原始文件的末尾繼續。 (upto n)。

P1:

$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) 
} 
} 

P2:

$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) 
} 
} 

P3:

$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) 
} 
} 

你能不能讓我知道如何做到這一點的工作嗎?任何語言(sed,awk,grep)都可以。

最佳,

Jaeyoung

回答

0

我會用awk。你可以玩記錄分隔符,像這樣:

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

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