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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1904|回复: 5

[求助] 求助个linux方面的问题

[复制链接]
发表于 2017-1-6 09:58:40 | 显示全部楼层 |阅读模式

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

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

x
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的``里就没办法转义*吗?


百思不得其解,求懂行的大神指点,谢谢!
发表于 2017-1-6 11:10:20 | 显示全部楼层
没看懂意图,我猜测下 楼主是想给这个 命令行起个别名? alias
 楼主| 发表于 2017-1-6 12:19:06 | 显示全部楼层
回复 2# AnswerLJ


    不是,可能我没说清楚,我现在的意图是想 在csh的脚本里 将 grep的结果赋给a,然而搜不到结果了,是不是``里就没什么法子转义?
发表于 2017-1-6 16:24:51 | 显示全部楼层
可以转义,大概是因为csh不是默认的shell,导致你的脚本执行异常了吧,你可以自己在终端下测试下;
将你的命令行默认SHELL  chsh /bin/csh 然后 set a = `grep "*E" log`;echo ${a};应该是有内容的
发表于 2017-1-22 22:56:17 | 显示全部楼层
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
发表于 2017-2-6 18:05:45 | 显示全部楼层
回复 1# logue


脚步开始处添加如下一行就可以了:
set nonomatch=1

和下面帖子中的是一类问题,
http://bbs.eetop.cn/thread-621615-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-4-20 20:40 , Processed in 0.022212 second(s), 6 queries , Gzip On, Redis On.

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