免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10688 | 回复: 16
打印 上一主题 下一主题

请教一个grep搜索中的的单引号转义问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-14 11:00 |只看该作者 |倒序浏览
[root@testserver juhuaxia]# more a
bbq 123a
"b
'c
bcdb
efgh
5555
h
i
j
k
lnnl

[root@testserver juhuaxia]#grep -n "\"" a
2:"b

[root@testserver juhuaxia]#grep -n "\'" a
1:bbq 123a
2:"b
3:'c
4:bcdb
5:efgh
6:5555
7:h
8:i
9:j
10:k
11:lnnl
12:



为什么'没法转义?
另外,在grep里面,正则表达式用双引号括起来与用单引号括起来,有啥区别啊?

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2011-10-14 11:12 |只看该作者
grep \" a
grep \' a

另外,那是在grep外面,而不是里面,有兴趣可以读置顶文章

论坛徽章:
0
3 [报告]
发表于 2011-10-14 11:54 |只看该作者
还有个小疑问:

ababab  这种正则怎么写啊。
grep '^ba$\{1\}|' 文件名,这么写的意思究竟是ba重复一次,还是$符号重复一次呢。

之前的疑问我在基础12问里面没找到解释,冰天雪地求讲解

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
4 [报告]
发表于 2011-10-14 12:08 |只看该作者
egrep '(ab)\1\1'

论坛徽章:
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
5 [报告]
发表于 2011-10-14 12:55 |只看该作者
正则表达式用双引号括起来与用单引号括起来,有啥区别啊?

十三问:" "(雙引號) 與 ' '(單引號)差在哪?
http://bbs.chinaunix.net/viewthr ... p;page=4#pid1511745
  1. str=cde
  2. echo abcde | grep "$str"
  3. echo bcdef | grep '$str'
复制代码

论坛徽章:
0
6 [报告]
发表于 2011-10-14 13:35 |只看该作者
谢谢楼上的几个大哥。
双引号里面的:反引号,$,\  功能保留,单引号里面的功能全部不保留,做为字符串,我个我知道。
我现在比较纠结

grep "\'" a

为什么他返回a文件的整个内容,说不过去啊。

论坛徽章:
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
7 [报告]
发表于 2011-10-14 13:56 |只看该作者
回复 6# o06v90o


set -x; grep "'" a
set -x; grep "\'" a
set -x; grep "abcxyz" a
set -x; grep "abc'xyz" a
set -x; grep "abc\'xyz" a

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
8 [报告]
发表于 2011-10-14 15:17 |只看该作者
本帖最后由 ziyunfei 于 2011-10-14 16:03 编辑

grep "\'" a
相当于
grep "" a
相当于
grep \^ a

?很神奇

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
9 [报告]
发表于 2011-10-14 16:18 |只看该作者
看了下grep源码,纠正一下楼上
  1.         case '`':
  2.           if (backslash && !(syntax_bits & RE_NO_GNU_OPS)){
  3.             return lasttok = BEGLINE;        /* FIXME: should be beginning of string */
  4.           }
  5.           goto normal_char;

  6.         case '\'':
  7.           if (backslash && !(syntax_bits & RE_NO_GNU_OPS))
  8.             return lasttok = ENDLINE;        /* FIXME: should be end of string */
  9.           goto normal_char;
复制代码
也就是说  \`  等同于  ^   //反引号

也就是说  \'  等同于  $    //单引号

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
10 [报告]
发表于 2011-10-14 16:30 |只看该作者
本帖最后由 waker 于 2011-10-14 16:31 编辑

There are two other operators that work on buffers. In Emacs, a buffer is, naturally, an Emacs buffer. For other programs, gawk's regexp library routines consider the entire string to match as the buffer. The operators are:

\`
    Matches the empty string at the beginning of a buffer (string).


\'
    Matches the empty string at the end of a buffer (string).

Because ‘^’ and ‘$’ always work in terms of the beginning and end of strings, these operators don't add any new capabilities for awk. They are provided for compatibility with other GNU software.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP