微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > 求助个linux方面的问题

求助个linux方面的问题

时间:10-02 整理:3721RD 点击:
1, 在gvim中,如果搜索irun: *E直接在\后面输入irun: \*E即可匹配上。
可是要是搜索*E的话直接在\后面输入*E就行了,这里的*为什么不要转义呢?(加了也行)

2, 在terminal中类似,grep “irun: \*E” log必须要转义才能搜到结果,
grep “*E” log 即可搜索到结果,也不要转义(加了也行),为何?

3, 在csh脚本里,直接执行grep “*E” log或者grep “irun: \*E” log 这样的cmd都OK,
但是 set a = `cmd` 就不行了,
考虑到backslashit问题(冗长又似乎没有规律可循的转义),*前面加了几个\也无济于事,
难道csh的``里就没办法转义*吗?

百思不得其解,求懂行的大神指点,谢谢!

没看懂意图,我猜测下 小编是想给这个 命令行起个别名? alias

不是,可能我没说清楚,我现在的意图是想 在csh的脚本里 将 grep的结果赋给a,然而搜不到结果了,是不是``里就没什么法子转义?

可以转义,大概是因为csh不是默认的shell,导致你的脚本执行异常了吧,你可以自己在终端下测试下;
将你的命令行默认SHELLchsh /bin/csh 然后 set a = `grep "*E" log`;echo ${a};应该是有内容的

1~2的问题,属于正则表达式的范畴。gvim和grep的*,表达意义是一致的;表示星号前一字符匹配0次或多次。
所以,正确写法应为

  1. \*E

复制代码

。依你的写法,不加反斜杠;不符合正则表达式的意义。即便得出你期望的结果,也是不准确的;难免将来会出问题。

第3个问题,我手头没有csh环境,用bash做过实验,没有任何问题。
qilei@AFAAW-704030720:~$ grep "\*E" ncverilog.log
aaaaaa*E, there is an error in abc.v :10
*E, there is an error in abc.v :17
qilei@AFAAW-704030720:~$ a=`grep "\*E" ncverilog.log`
qilei@AFAAW-704030720:~$ echo $a
aaaaaa*E, there is an error in abc.v :10 *E, there is an error in abc.v :17

脚步开始处添加如下一行就可以了:
set nonomatch=1
和下面帖子中的是一类问题,
http://bbs.eetop.cn/thread-621615-1-1.html

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top