我有一个包含许多其他不需要的项目的文件我想自动删除它们,留下所需的数据
我有大约100个单元格,我只需要单元格名称以及这100个单元格的所有引脚和方向,并删除所有其他项目(lib文件中没有行41437)
grep -A 41435 'cell' lib | grep -iE '(cell|pin|direction)'
输出
cell( FVOXY_O_W11X ) {
pa_p ( vcc ) {
direction : input;
pb_p ( vss ) {
direction : input;
is_macro_cell : true;
pin(measure) {
related_p_pin : x ;
related_g_pin : y ;
direction : inout ;
original :measure;
} /* end of pin measure */
pin(pass) {
related_p_pin : x ;
related_g_pin :y ;
direction : input ;
original : pass;
} /* end of pin pass */
我需要什么
cell( FOVIO_NOM_D2DSYNC8X )
pin(measure)
direction : inout
pin(pass)
direction : input
就像这样我有大约100个单元格我只想要单元格名称和那个单元格的所有引脚和方向可以任何人告诉我怎么可以
答案 0 :(得分:0)
awk
救援!
$ awk '/^cell/; /^pin/{print; p=1} p && /direction/{print; p=0}' file
会给你一行
cell( FVOXY_O_W11X ) {
pin(measure) {
direction : inout ;
pin(pass) {
direction : input ;
你可以在打印前进行一些过滤,以消除不需要的字符。
<强>解释强>
开头的行
/^cell/;
打印以&#34; cell&#34;
/^pin/{print; p=1}
以&#34; pin&#34;开头的打印行并设置变量 p ,以便我们知道我们在&#34; pin&#34;上下文
p && /direction/{print; p=0}
如果我们在&#34; pin&#34;上下文打印行有&#34;方向&#34;并重置 p 以从当前&#34; pin&#34;中退出上下文。