如何优化单行命令实现LEF文件中符合阈值条件的RECT左移4μm编辑
优化方案
1. 最简洁awk实现(推荐)
仅需一行即可完成逻辑,语法规整可读性高:
awk '/^[[:space:]]*RECT/ && $3>1200 {$2-=4;$4-=4}1' trial.lef
逻辑说明:自动跳过所有非RECT行,仅当RECT行的Y坐标(第三个字段$3)大于1200时,将两个X坐标($2、$4)各减4,其余内容原样输出。如果需要直接修改原文件,GNU awk可加-i inplace参数:
awk -i inplace '/^[[:space:]]*RECT/ && $3>1200 {$2-=4;$4-=4}1' trial.lef
2. 优化版Perl实现
去掉原写法手动拼接字段、补全结尾符号的冗余逻辑,修改对应字段后直接输出即可:
perl -lane 'if($F[0] eq "RECT" && $F[2] > 1200) {$F[1] -=4; $F[3]-=4} print join " ", @F' trial.lef
如果需要直接修改原文件,加-i参数即可:
perl -i -lane 'if($F[0] eq "RECT" && $F[2] > 1200) {$F[1] -=4; $F[3]-=4} print join " ", @F' trial.lef
内容的提问来源于stack exchange,提问作者user2141046
相关产品推荐
相关产品推荐

