在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1528|回复: 4

[求助] 使用sed 去替換 但發生不該換的也一起被替換了 我該如何修改

[复制链接]
发表于 2021-4-8 10:12:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x


目前遇到一個問題
使用sed 去替換字串 但發現把不該換的也一起被換掉
要如果去修改寫的shell呢

#!/bin/csh -f
set cell_name = $2
set drc_rule = "/data/user/tc.chen/PV_data/tsmc_12ffc/drc/CLN12FFC_9M_2Xa1Xd3Xe2Z_001.13a.encrypt"
//set gds_dir = "/data/user/tc.chen/workpath/PR/project_t12nm/71_pv/gds"
set gds_dir = $1
sed -e 's#\(layout PRIMARY\).*#\1 \"'$cell_name'\"#g' \
        -e 's#\(LAYOUT PATH\).*#\1 \"'$gds_dir/$cell_name.gds'\"#g' \
        -e 's#\(DRC RESULTS DATABASE\).*#\1 \"'$cell_name.db'\"#g' \    <--------------------修改這一行
        -e 's#\(DRC SUMMARY REPORT\).*#\1 \"'$cell_name.drc.rep'\"#g' \
        $drc_rule >! _drc.cal_

====================================================================
// ENVIRONMENT SETUP
//------------------

PRECISION                      10000
LAYOUT PRECISION                1000
LAYOUT MAGNIFY                  AUTO
DRC RESULTS DATABASE PRECISION  1000  <---------------------------------這一行也被取代了
DRC MAGNIFY RESULTS              0.1
DRC MAGNIFY DENSITY              0.1
DRC MAGNIFY NAR                  0.1

LAYOUT SYSTEM GDSII
LAYOUT PATH "/data/user/tc.chen/workpath/PR/project_t12nm/71_pv/gds/test.gds"
LAYOUT PRIMARY "test"

DRC RESULTS DATABASE "test.db"   <--------------------------------------原本是要針對這一行替換
DRC SUMMARY REPORT "test.rep"  // HIER


发表于 2021-4-9 08:17:55 | 显示全部楼层
你在使用sed匹配的时候,下面这一行sed命令能匹配到的这两行,并没有单独匹配到你想要的那一行:
脚本:
        -e 's#\(DRC RESULTS DATABASE\).*#\1 \"'$cell_name.db'\"#g' \    <--------------------修改這一行
结果:
DRC RESULTS DATABASE PRECISION  1000  <---------------------------------這一行也被取代了
DRC RESULTS DATABASE "test.db"   <--------------------------------------原本是要針對這一行替換

你可以再把sed匹配范围缩小一点,使得sed匹配到这一行,多匹配个“ "”就可以了。
脚本:
        -e 's#\(DRC RESULTS DATABASE\) ".*#\1 \"'$cell_name.db'\"#g' \

发表于 2021-4-9 08:35:23 | 显示全部楼层
模式匹配加上 “就可以了
-e 's#\(DRC RESULTS DATABASE\) \”.*#\1 \"'$cell_name.db'\"#g' \   
如果“前面有多个空格的话:
-e 's#\(DRC RESULTS DATABASE\) .*\”.*#\1 \"'$cell_name.db'\"#g' \   
 楼主| 发表于 2021-4-9 14:45:49 | 显示全部楼层
模式匹配加上 “就可以了 -e 's#\(DRC RESULTS DATABASE\) \”.*#\1 \"'$cell_name.db'\"#g' \    如果“前面有多个空格的话: -e 's#\(DRC RESULTS DATABASE\) .*\”.*#\1 \"'$cell_name.db'\"#g' \   
 楼主| 发表于 2021-4-9 14:46:59 | 显示全部楼层
感謝!問題解決了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-4 10:45 , Processed in 0.020835 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表