求助个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的``里就没办法转义*吗?
百思不得其解,求懂行的大神指点,谢谢!
第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
可是要是搜索*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次或多次。
所以,正确写法应为
- \*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