免费注册 查看新帖 |

Chinaunix

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

sed 's/boy\|girl\|people/human being/g' human [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-02-25 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-12 09:34 |只看该作者 |倒序浏览
  1. sed 's/boy\|girl\|people/human being/g' human
复制代码
在贴子中看到这样一条,将文件中所有boy,girl,people替换为human being,
    在|前为什么还要加个反斜杠?  如果不加这里|就是普通的,反而加了就不是普通的了?

    \其作用是告诉sed, |不是常规的?不要去找|这个东西?糊涂了

论坛徽章:
0
2 [报告]
发表于 2012-07-12 09:47 |只看该作者
本帖最后由 efossz 于 2012-07-12 09:50 编辑

例:x|y匹配x或y
sed默认支持基本正则表达式
而|为扩展正则表达式
因此需要转义符\
如不转义,可使用sed -r 's/boy|girl|people/human being/g' human
-r代表使用扩展正则
不知道解释明白没有?

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-02-25 06:20:00
3 [报告]
发表于 2012-07-12 10:29 |只看该作者
回复 2# efossz


    嗯..可以
  1. grep '\(3\)\.[0-9].*\1 *\1' file
复制代码
\(3\)\.[0-9].*\1 *\1 表示匹配以 "3开头的小数,小数点后跟一位数字,在此数字后可以跟若干个非换行符之外的东东,但在这个东东后面一定要跟一个数字3,在3之后再跟若干个空格,空格之后要有一个数字3"
    这里也是那个意思吧?如果用egrep或grep -E就在()可以不用反斜杠了

论坛徽章:
0
4 [报告]
发表于 2012-07-12 10:33 |只看该作者
回复 1# xiaoshichao143
  1. personball@vostro:~$echo 'a|b|c'|sed 's/a\|b/#/g'             #a或b
  2. #|#|c
  3. personball@vostro:~$echo 'a|b|c'|sed 's/a|b/#/g'          #按|字符处理
  4. #|c
  5. personball@vostro:~$echo 'a|b|c'|sed -r 's/a|b/#/g'            #a或b
  6. #|#|c
  7. personball@vostro:~$
复制代码

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-02-25 06:20:00
5 [报告]
发表于 2012-07-12 10:36 |只看该作者
本帖最后由 xiaoshichao143 于 2012-07-12 11:35 编辑

回复 4# personball


    嗯..与efossz一样...Tks.

论坛徽章:
0
6 [报告]
发表于 2012-07-12 10:37 |只看该作者
回复 3# xiaoshichao143

是的!

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP