免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2323 | 回复: 6

问个简单的问题 [复制链接]

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-04-30 06:20:00
发表于 2011-08-13 23:02 |显示全部楼层
echo 123 |sed 's/123/abc/p;c111111'
输出
abc
111111

请问,c111111的操作对象是p出来的那个123吧(第二行123)?也就是说c改变了pattern空间的内容
如果我的理解有误请指正啊 谢谢各位

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
发表于 2011-08-13 23:25 |显示全部楼层
本帖最后由 liion631818 于 2011-08-13 23:29 编辑
函数参数 c 表示改变文件中的数据。其格式如下 :
[address1[ ,address2]]c\ 使用者所输入的数据
sed sed sed 执行改变动作的情况 : 在 pattern space 内数据输出时 , sed sed sed 改变它成为使用者所输入的数据。
例三 . 将文件中 1 至 100 行的资料区 , 替换成如下两行资料 :
How are you?
data be deleted!
则其命令列如下
sed sed sed -e '1,100c\
How are you?\
data be deleted!
' input.dat

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
发表于 2011-08-13 23:53 |显示全部楼层
111111并不存在模式空间,但c命令是先把模式空间清空
用-n来看一下
echo X|sed -n 'c11111
s/1/X/g;p'
只得到
11111

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
发表于 2011-08-14 00:00 |显示全部楼层
这种涉及到模式空间、保留空间之外的sed命令,偶基本不用

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
发表于 2011-08-14 00:49 |显示全部楼层
回复 1# 失落之岛


   
echo 123 |sed 's/123/abc/p;c111111'
输出
abc
111111

请问,c111111的操作对象是p出来的那个123吧(第二行123)?也就是说c改变了pattern空间的内容
如果我的理解有误请指正啊 谢谢各位


你的前半句是错误的,c111111操作对象是abc,也就是执行了s///之后的pattern空间的内容,你的后半句是对的
改下代码,给c命令加个条件判断,看看结果就理解了

  1. sed 's/123/abc/p;/123/c111111'
复制代码

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-04-30 06:20:00
发表于 2011-08-14 09:17 |显示全部楼层
回复  失落之岛


   

你的前半句是错误的,c111111操作对象是abc,也就是执行了s///之后的pattern ...
yinyuemi 发表于 2011-08-14 00:49


谢谢,我还想问的是
    echo 123|sed 's/123/abc/p;/abc/c111111'
abc
111111
为什么是改变的第二行的abc呢,而不是上面的abc修改成111111
难道这个输出到stdout顺序是先输出了p生成的内容然后才是c11111再到stdout

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
发表于 2011-08-14 10:39 |显示全部楼层
本帖最后由 yinyuemi 于 2011-08-14 11:07 编辑

回复 6# 失落之岛


    如果没有使用标签的情况(或是某些命令,如N),sed是按照代码顺序,从头执行到尾的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP