Awk /Sed 或 TCL 脚本来搜索一系列模式

问题描述 投票:0回答:1

我有一个如下所述的文件

文件1

Module1 (a dd ddd )
jdjd ikdnd kdndn didkdn;
jdjdjl kdkdk kdkd lkd;
Ann {"Load DR"}  ;
V { REST_TMS=1 ;
      REST_TDI = 0
      REST_TCK=1 ;
     REST_TDI = 0;
}
V {   REST_TDI = 0
      REST_TCK=1 ;
     REST_TDI2 = 0;
     REST_TMS=0;
}
V { REST_TMS=0 ;
      REST_TDI = 1
      REST_TCK=1 ;
     REST_TDI = 0;

}
V { 
      REST_TDI = 1
      REST_TCK=1 ;
     REST_TDI = 0;
     REST_TMS=1;
}
jjd djdjdj djdj (ndhdn )
jdjdjd jdjd jdjd 
Ann( " Load IR"}
Ann ("Load DR 2"}
V { REST_TMS=1 ;
      REST_TDI = 0
      REST_TCK=1 ;
     REST_TDI = 0;
}
V {   REST_TDI = 0
      REST_TCK=1 ;
     REST_TDI2 = 0;
     REST_TMS=0;
}
V { 
      REST_TDI = 1
      REST_TCK=1 ;
     REST_TDI = 0;
     REST_TMS=0;

}
V {  REST_TDI = 1
      REST_TCK=1 ;
     REST_TDI = 0;
    REST_TMS=1;

}
V { REST_TMS=0 ;
      REST_TDI = 1
      REST_TCK=1 ;
     REST_TDI = 0;

}
Ann{"Load IR"}

我需要创建一个 Awk 或 Sed 脚本来搜索特定模式 第一个搜索模式是“加载 DR”,第二个搜索模式是 REST_TMS=1 第三个搜索模式是“REST_TMS=0”,第三个搜索模式是 REST_TMS=0 意思是搜索“Load DR”后,会搜索 1 0 0 序列来查找 TMS,然后在第三个 TMS=0 之前插入 NEW_TRAN 字符串

输出文件


Module1 (a dd ddd )
jdjd ikdnd kdndn didkdn;
jdjdjl kdkdk kdkd lkd;
Ann {"Load DR"}  ;
V { REST_TMS=1 ;
      REST_TDI = 0
      REST_TCK=1 ;
     REST_TDI = 0;
}
V {   REST_TDI = 0
      REST_TCK=1 ;
     REST_TDI2 = 0;
     REST_TMS=0;
}
NEW_TRAN
V { REST_TMS=0 ;
      REST_TDI = 1
      REST_TCK=1 ;
     REST_TDI = 0;

}
V { 
      REST_TDI = 1
      REST_TCK=1 ;
     REST_TDI = 0;
     REST_TMS=1;
}
jjd djdjdj djdj (ndhdn )
jdjdjd jdjd jdjd 
Ann( " Load IR"}
Ann ("Load DR 2"}
V { REST_TMS=1 ;
      REST_TDI = 0
      REST_TCK=1 ;
     REST_TDI = 0;
}
V {   REST_TDI = 0
      REST_TCK=1 ;
     REST_TDI2 = 0;
     REST_TMS=0;
}
NEW_TRAN 
V { 
      REST_TDI = 1
      REST_TCK=1 ;
     REST_TDI = 0;
     REST_TMS=0;

}
V {  REST_TDI = 1
      REST_TCK=1 ;
     REST_TDI = 0;
    REST_TMS=1;

}
V { REST_TMS=0 ;
      REST_TDI = 1
      REST_TCK=1 ;
     REST_TDI = 0;

}
Ann{"Load IR"}

我使用下面所述的代码来搜索一系列搜索模式

awk '/Load DR/{f=1}f&&/REST_TMS = 1;/f&&/REST_TMS"= 0/f&&/REST_TMS"= 0/{print "NEW_TRAN"}1' File1

它在 REST_TMS=0 的任何地方打印 NEW_TRAN 请帮帮我

awk sed tcl
1个回答
0
投票

关于

在 REST_TMS=0 的任何地方打印 NEW_TRAN

考虑第二种模式,即这负责

{print "NEW_TRAN"}

f&&/REST_TMS = 1;/f&&/REST_TMS"= 0/f&&/REST_TMS"= 0/

它确实由 4 个部分组成,即

&&

观察第二个和第三个正在使用串联,要么是 
f /REST_TMS = 1;/f /REST_TMS"= 0/f /REST_TMS"= 0/

要么是

/REST_TMS = 1;/
与变量
/REST_TMS"= 0/
。与
f
等于
f
连接的效果是
1
01
并且两者都被认为是 true,因此上面的模式相当于写作
11

	
© www.soinside.com 2019 - 2024. All rights reserved.