- 论坛徽章:
- 0
|
请教 文本文件转换的问题
出差中,闲着无事,给你写一个吧
- use strict;
- my $i=0;
- my $n=-3;
- my @letter = ("a".."z");
- @ARGV = glob "cpuinfo" or die "no file found";
- $^I = "";
- while (<>;) {
- if($i==1){
- s/^$letter[$n]: (.*)/ $1/;
- $i++;
- }
- if(/MDR_LOAD <- 1, MDR_INST <- 0/){
- chomp;
- $i++;
- }
- if($i>;1){
- s/^$letter[$n]: (.*)/$letter[$n-1]: $1/;
- }
- print;
- $n++;
- }
复制代码
- [root@mail workspace]# cat cpuinfo
- R2 <- R1 + (R4)
- opcode op_add_21_4
- comment proc_opcode := "01100110"; -- R2 <- R1+(R4)
- a: MDR <- mem[PC], PC <- PC + 1
- b: MAR_SRC <- R4, MAR_LOAD <- 1, ADDR_SEL <- 1, MDR_INST <- 0, PC_INC <- 0, R2_PENDING <- 1
- c: MDR_SRC <- MEM, MDR_LOAD <- 1, MDR_INST <- 0, PC_INC <- 0, R2_PENDING <- 1
- d: ALUs1_SRC <- R1, ALUs2_SRC <- MDR, ALU_FUNC <- alu_add, ALUOUT_DEST <- R2, ALUOUT_LOAD <- 1
- e: WB_DEST <- R2, REG_LOAD <- 1
- [root@mail workspace]#
- [root@mail workspace]# ./update_file.pl
- [root@mail workspace]# cat cpuinfo
- R2 <- R1 + (R4)
- opcode op_add_21_4
- comment proc_opcode := "01100110"; -- R2 <- R1+(R4)
- a: MDR <- mem[PC], PC <- PC + 1
- b: MAR_SRC <- R4, MAR_LOAD <- 1, ADDR_SEL <- 1, MDR_INST <- 0, PC_INC <- 0, R2_PENDING <- 1
- c: MDR_SRC <- MEM, MDR_LOAD <- 1, MDR_INST <- 0, PC_INC <- 0, R2_PENDING <- 1 ALUs1_SRC <- R1, ALUs2_SRC <- MDR, ALU_FUNC <- alu_add, ALUOUT_DEST <- R2, ALUOUT_LOAD <- 1
- d: WB_DEST <- R2, REG_LOAD <- 1
- [root@mail workspace]#
复制代码
应该合乎要求吧,跟行号无关 [/code] |
|