免费注册 查看新帖 |

Chinaunix

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

sed --- [][] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-19 14:07 |只看该作者 |倒序浏览

  1. $echo "2a" | sed 's/[0-9][a-z]//'   -------1

  2. $echo "[" | sed 's/[0-9][a-z]//'    ------2
  3. [
  4. $echo "[edji][dfj]" | sed 's/[^][]\+//g'    ------3
  5. [][]
  6. $echo "[edji][dfj]" | sed 's/[^[]]\+//g'   -----4
  7. [edj[df
复制代码

[0-9][a-z]:  1 : 0 1 ... 9 a b ... z
              3 : 除了 ] [ 之外的字符
              2 : 为何不解释为: 1 2 ... 9 ] [ a b ... z 呢?
              4 : 这个又作何解

awk 也出现这样的问题吧

对正则表达 [] 的自身引用有点模糊
[ 和 ] 匹配的规则是什么

[ 本帖最后由 爱知 于 2008-8-19 14:16 编辑 ]

论坛徽章:
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 [报告]
发表于 2008-08-19 14:23 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2008-08-19 14:26 |只看该作者
规则是
]要放在第一个
-放最后一个
^不能放第一个

谢谢waker

论坛徽章:
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
4 [报告]
发表于 2008-08-19 14:41 |只看该作者

回复 #3 爱知 的帖子

好好看正则吧。

论坛徽章:
0
5 [报告]
发表于 2008-08-20 15:00 |只看该作者
正则是基础啊。。

论坛徽章:
0
6 [报告]
发表于 2008-08-20 23:08 |只看该作者
原帖由 爱知 于 2008-8-19 14:26 发表
规则是
]要放在第一个
-放最后一个
^不能放第一个

谢谢waker

这个没明白,能具体解析一下嘛?

论坛徽章:
0
7 [报告]
发表于 2008-08-20 23:31 |只看该作者
‘]’由于与自身重复,可视为在该正则表达式特殊字符
‘-’ ,‘^’,也是该正则表达式特殊字符

要引用上述3个,必须遵从一定的规则才能避免被当成特殊字符
规则是
]要放在第一个
-放最后一个
^不能放第一个

  1. ]要放在第一个:如果不放在第一个会出现什么结果?
  2. [ab]c] ===  ac]  bc]            
  3. []abc] === ] a b c
  4. -放最后一个:如果不放最后一个会出现什么结果?  
  5. [a-z] === a b c ... z
  6. [az-] === a z -
  7. ^不能放第一个:如果放第一个会出现什么结果?
  8. [^abc] === 不是a,b,c的单个字符
  9. [abc^] or [a^bc] === a b c ^
复制代码

不知以上说的正确不正确

[ 本帖最后由 爱知 于 2008-8-20 23:37 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2008-08-21 07:12 |只看该作者
- 放在第一位也行的吧?

论坛徽章:
0
9 [报告]
发表于 2008-08-21 08:04 |只看该作者
原帖由 __lxmxn__ 于 2008-8-21 07:12 发表
- 放在第一位也行的吧?

没有‘]’时应该可以

还是基础不实在,学习一个命令,首先就要把man文档看完!
man grep
       Most metacharacters lose their special meaning
       inside lists.  To include a literal ]  place  it  first  in  the
       list.   Similarly,  to include a literal ^ place it anywhere but
       first.  Finally, to include a literal - place it last.

[ 本帖最后由 爱知 于 2008-8-24 15:03 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP