免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: sunzhiguolu
打印 上一主题 下一主题

[文本处理] 已经解决.结贴 命令 grep - [-e] 选项的使用时机 (shell编程) [复制链接]

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
11 [报告]
发表于 2015-09-06 21:55 |只看该作者
本帖最后由 sunzhiguolu 于 2015-09-06 22:12 编辑

回复 10# Shell_HAT
echo -e "-n\n-i\n-e" | grep -Pe '-(n|i|e)'


您真的没有爱心...

大神,对于我提出的问题其实我已经在网络上尝试查找相关的说明.也看了关于grep命令的帮助文档. 只是没有找到合适的方法去印证,还请大神给点建议,别再拿菜鸟穷开心了. 其实我也不希望将一些看似愚蠢的问题拿到论坛中浪费大家宝贵的时间,还请大神给予小弟多一些鼓励,支持.
                                     sunzhiguolu

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
12 [报告]
发表于 2015-09-07 08:10 |只看该作者
回复 11# sunzhiguolu


嗯,类似于
  1. echo -e "-n\n-i\n-e" | grep -P -- '-(n|i|e)'
复制代码

论坛徽章:
11
射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
13 [报告]
发表于 2015-09-07 09:55 |只看该作者
or to  protect  a  pattern  beginning with a hyphen (-)
或者保护一个以"-"开头的表达式
  1. # cat file
  2. -a
  3. -b
  4. # grep -e -a file
  5. # grep -a file
复制代码

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
14 [报告]
发表于 2015-09-07 10:03 |只看该作者
本帖最后由 sunzhiguolu 于 2015-09-07 10:06 编辑

回复 12# Shell_HAT
大神,小弟还有一事不明还请指点...
echo -e "-n\n-i\n-e" | grep -P -- '-(n|i|e)'

未曾在帮助文档中找有这个红色的连续两个连字符部分的说明,这是啥选项啊! 真的很神奇,竟然也达到了相同的目的!

   

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
15 [报告]
发表于 2015-09-07 10:08 |只看该作者
回复 13# hjfeng1988
多谢前辈给出的生动示例,请您帮忙看看 grep 命令中连续的两个连字符表示的是一个什么含义,它是一个选项吗?

   

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
16 [报告]
发表于 2015-09-07 14:47 |只看该作者
回复 12# Shell_HAT
难道这两个连字符 "--",是由 shell 进行解析的? 用以表示其后面的 "-" 只是作为文本而不是作为选项进行解析?
小弟一头雾水,还请大神指点...

   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
17 [报告]
发表于 2015-09-07 16:20 |只看该作者
man bash
--        A -- signals the end of options and disables further option processing.  Any arguments after the -- are treated as filenames and arguments.  An argument of - is equivalent to --.

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
18 [报告]
发表于 2015-09-07 17:16 |只看该作者
本帖最后由 jason680 于 2015-09-07 17:27 编辑

回复 15# sunzhiguolu


>> ... [-e] 选项 使用时机,啥时候能派上用场啊?

Ans: never

用grep多年...
你这讨论的 -e ....
记忆中,没用过...

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
19 [报告]
发表于 2015-09-07 17:17 |只看该作者
本帖最后由 sunzhiguolu 于 2015-09-07 20:39 编辑

回复 17# Shell_HAT
man bash
--        A -- signals the end of options and disables further option processing.  Any arguments after the -- are treated as filenames and arguments.  An argument of - is equivalent to --.

大神,您有点难为我了. 我的英语太烂了,我将句子用颜色分为3部分. 将我的理解贴出,有不对的地方还请大神指点...
1. 如果一对符号 "--"是以选项的最后一部分出现那么其后出现的以 "-"  开头的选项将不作为选项进行处理
2. 跟在一对 "--" 后面的任何参数都只作为文件名或者参数进行处理 (红色部分也不太明白)
3. 这一句不太懂...

还请您多多指点...  小弟拜谢...

按照以上的注释要求进行测试结果如下:
echo -e "-e\n-i\n-n" | grep -P -- -n '-(e|i|n)'
grep: -(i|n|e): 没有那个文件或目录

从上述的结果,感觉 "-n" 被作为搜索字符串进行处理,其后的 '-(e|i|n)' 被作为一个文件名进行解析.

再次进行印证:
  1. cat a
  2. -i
  3. -n
  4. -e
  5. ---------------------------------
  6. grep -- -n a
  7. -n
复制代码
据得到的结果,如果作为选项部分最后一次出现的连续的两个 "--", 在其后面只能存在两种形式的参数 (不知我的这种叫法是否合理):
a. 当接受来自管道命令的结果时,那么在其后只能接受一个作为搜索字符串的参数,即使指定的是一个选项也按照搜索字符串
    进行处理;
b. 如果为其后添加第二个参数时, grep 命令由于 "--" 的作用,将其理解为一个文件名进行解析;

由此得出:
A. 如果 grep 命令接受来自管道的命令的结果. 那么 选项 "--" 后面只能是 "搜索字符串";
B. 如果是从文件读入文本的话, 选项 "--" 后面参数的顺序为固定的 "搜索字符串", "目标文件";

不知我的理解是否正确,还请您指点...

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
20 [报告]
发表于 2015-09-07 17:33 |只看该作者
回复 18# jason680
我知道您是在逗我,我使用linux刚起步,在看grep命令的帮助文档时,碰到了 "-e" 这个选项. 在网上找了一些资料,并没有完全弄懂,所以才向大神们请教. 还请您多多理解,其实从您回复的帖子当中我能看出您是有意将一部分问题交给我自己去解决,但是我本人的基础较差加上非常烂的英文水平才导致一直讨饶各位大神. 如果在向您以及其他各位大神或者前辈回帖当中有什么不周到的地方,还请各位大神指出来. 小弟一定改正.

   最后,非常感谢您的回帖. 多谢多谢...
                                                     sunzhiguolu


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP