免费注册 查看新帖 |

Chinaunix

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

sed -n 与 -e 有点晕,哪位大侠能进来小解释一下 [复制链接]

论坛徽章:
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
11 [报告]
发表于 2010-02-23 18:20 |只看该作者
`-e SCRIPT'
`--expression=SCRIPT'

-e的参数是sed命令(脚本)

`-n'
`--quiet'
`--silent'

表示不自动输出。

唉……

论坛徽章:
0
12 [报告]
发表于 2010-02-23 18:33 |只看该作者
sed  -n 's/\|/a/'p a

sed  -e 's/\|/a/'p a

那您能帮忙解释下这两个命令的执行流程么?

sed  -n 's/\|/a/'p a = sed  's/\|/a/' a 这样写吧,如果我没理解错

论坛徽章:
0
13 [报告]
发表于 2010-02-23 20:07 |只看该作者
呵呵~ 这样会出人命的~ 要从头来

论坛徽章:
0
14 [报告]
发表于 2010-02-23 22:45 |只看该作者
回复 13# iori809


         怎讲啊?

论坛徽章:
0
15 [报告]
发表于 2010-02-24 21:42 |只看该作者
继续顶下

论坛徽章:
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
16 [报告]
发表于 2010-02-24 22:04 |只看该作者

论坛徽章:
0
17 [报告]
发表于 2010-02-25 18:41 |只看该作者
-n -e 我基本搞明白了

    sed  's/|/a/' a
a11111 |22222 |33333
a44444 |55555 |44444
a22222 |33333 |66666
       为什么这个只替换了第一个数列的‘ | ’呢?是不是因为后面的 ‘|’前面有空格?
   sed  's/|/a/g' a
a11111 a22222 a33333
a44444 a55555 a44444
a22222 a33333 a66666
       全局之后就全部替换了

    sed  's/\|/a/' a
a|11111 |22222 |33333
a|44444 |55555 |44444
a|22222 |33333 |66666
      这个是我以为‘|’前面要加\做转义,不过加了之后为啥是在第一个字符前面插入了字符呢?
    sed  's/\|/a/g' a
a|a1a1a1a1a1a a|a2a2a2a2a2a a|a3a3a3a3a3a
a|a4a4a4a4a4a a|a5a5a5a5a5a a|a4a4a4a4a4a
a|a2a2a2a2a2a a|a3a3a3a3a3a a|a6a6a6a6a6a
      加了全局之后就是所有字符前面都加a

     求赐教

论坛徽章:
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
18 [报告]
发表于 2010-02-25 20:44 |只看该作者
多看几遍sed1line
http://bbs.chinaunix.net/thread-336126-1-1.html

# substitute (ind and replace)"foo" with "bar" on each line
#在每一行中用"bar"替换(找并替换)foo"
sed 's/foo/bar/' # replaces only 1st instance in a line
                 # 在一行中,仅在第一次出现时替换
sed 's/foo/bar/4' # replaces only 4th instance in a line
                  #在一行中,仅在第四次出现时替换
sed 's/foo/bar/g' # replaces ALL instances in a line
                  #在一行中替换所有出现的值

论坛徽章:
0
19 [报告]
发表于 2010-02-25 21:50 |只看该作者
太感谢了,Linux与unix shell编程指南 这书里SED部分好像 就没有这么详细的解释。
    不过还有一个 ‘\’的问题,我找找看里面有没答案
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP