免费注册 查看新帖 |

Chinaunix

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

!求救高手:shell脚本显示文件的空行的疑问?--^$ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-11 22:38 |只看该作者 |倒序浏览
本帖最后由 happybgt 于 2010-04-12 22:47 编辑

显示输出文件zhao.conf的空行和行号:
以下三个都正确
# grep -n "^$" zhao.conf
# grep -n  ^$  zhao.conf
# grep -v '^$' zhao.conf

但是下面这三个怎么也是正确的
# grep -n  \^$   
# grep -n  ^\$
# grep -n  \^\$
“\”不是关闭RE meta了吗,这是为什么呢??
难道最后三个命令中“\”没有关闭RE meta,记得shell 十三问中写到:
^: 表示句首,如 ^abc 表示以 abc 开首的句。
“meta 在 RE 里具有特殊的功能, 要关闭只需在 meta 前面使用 escape( \ )字符”
照这么说, grep -n  \^$  zhao.conf 中\应该会关闭^这个RE meta啊?
难道是因为在这里,^和$搭配到一起的原因?

谢谢

补充:

grep -n   \^$     zhao.conf   正确
grep -n  "\^$"   zhao.conf   不对
grep -n  '\^$'     zhao.conf   不对

grep -n   ^\$     zhao.conf   正确
grep -n  "^\$"   zhao.conf   正确
grep -n  '^\$'    zhao.conf    不对

grep -n   \^\$    zhao.conf   正确
grep -n  "\^\$"  zhao.conf   不对
grep -n  '\^\$'   zhao.conf    不对

论坛徽章:
0
2 [报告]
发表于 2010-04-12 11:55 |只看该作者
自己顶顶顶

论坛徽章:
0
3 [报告]
发表于 2010-04-12 12:43 |只看该作者
显示输出文件zhao.conf的空行和行号:
以下三个都正确
# grep -n "^$" zhao.conf
# grep -n  ^$  zhao.c ...
happybgt 发表于 2010-04-11 22:38



    请阅读置顶帖 shell十三问

  试试 grep  -n \\^$ zhao.conf

论坛徽章:
0
4 [报告]
发表于 2010-04-12 13:10 |只看该作者
回复 3# crowsy001

十三问我看过了,# grep -n  \\^$   zhao.conf 我没试,晚上回去试试

我想知道下面这三个怎么也对啊?
# grep -n  \^$   
# grep -n  ^\$
# grep -n  \^\$

论坛徽章:
0
5 [报告]
发表于 2010-04-12 13:25 |只看该作者
本帖最后由 crowsy001 于 2010-04-12 13:34 编辑
回复  crowsy001

十三问我看过了,# grep -n  \\^$   zhao.conf 我没试,晚上回去试试

我想知道下面 ...
happybgt 发表于 2010-04-12 13:10



    用 " " 扩起来试下
   再看一遍呗,温故而知新, 多练习和思考

论坛徽章:
0
6 [报告]
发表于 2010-04-12 15:11 |只看该作者
回复 5# crowsy001

# grep -n  \^$   
# grep -n  ^\$
# grep -n  \^\$
这三个正确,但是要是加上单引号或者双引号就不对,这个我之前就试过了,即grep -n  "\^$" zhao.conf 或grep -n  '\^$ '  zhao.conf等是不对的。

现在我就想知道那三个为什么是正确的,难道是因为^和$搭配到一起,^不是RE meta了,我很是疑惑啊?
哪位大侠来帮帮忙,分析分析

论坛徽章:
0
7 [报告]
发表于 2010-04-12 15:13 |只看该作者
shell 也是很智能大
带$符号的没有特殊含义的 会将其sting 传入 命令

论坛徽章:
0
8 [报告]
发表于 2010-04-12 15:26 |只看该作者
后面那三个命令,我这测试没问题的,都能输出匹配的空行

GNU bash, version 4.0.33(1)-release

论坛徽章:
0
9 [报告]
发表于 2010-04-12 15:30 |只看该作者
本帖最后由 happybgt 于 2010-04-12 15:34 编辑

回复 8# ghp268


哈哈,老兄,估计你没看明白我的意思,
我知道是正确的,只是想知道为什么加了\之后还可以?
即为什么\没有关闭其后的^?

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
10 [报告]
发表于 2010-04-12 15:37 |只看该作者
只知其然。
# grep -n  \^$   
# grep -n  ^\$
# grep -n  \^\$

在shell眼里\^为^ ,\$为$,以上三个命令,grep看到的都是-n ^$,所以结果“也正确”。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP