免费注册 查看新帖 |

Chinaunix

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

sed的一个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-23 13:34 |只看该作者 |倒序浏览
one line里的一个实例
sed -e '$!{h;d};x'
输出倒数第二行

现在如果不加大括号,那么sed -e '$!h;d; x'就没有输出
我想问的是,在不加大括号的情况下,读取倒数第二行的时候,$!h把倒数第二行放在了hold里
然后读取最后一行的时候d删除了pattern里最后一行内容
再执行x,倒数第二行的内容又回到了pattern里
所以不也应该输出了倒数第二行的内容吗
求解

论坛徽章:
1
2015亚冠之吉达阿赫利
日期:2015-09-09 16:42:38
2 [报告]
发表于 2011-12-23 13:59 |只看该作者
在不加大括号的情况下,读取倒数第二行的时候,$!h把倒数第二行放在了hold里
然后会 执行 d x 命令 此时 保持空间 为空 然后 读取最后一行 执行 d x 命令 都为空

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
3 [报告]
发表于 2011-12-23 14:01 |只看该作者
df110341243 发表于 2011-12-23 13:34
one line里的一个实例
sed -e '$!{h;d};x'
输出倒数第二行

原因是读最后一行的时候,执行d了,什么都没跑出来.

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
4 [报告]
发表于 2011-12-23 14:11 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2011-12-23 14:19 |只看该作者
ok 搞定 非常thx

论坛徽章:
0
6 [报告]
发表于 2011-12-23 14:34 |只看该作者
cjaizss 发表于 2011-12-23 14:01
原因是读最后一行的时候,执行d了,什么都没跑出来.

呃 还是有问题 回复错了 我用sedsed仔细看了下
cat test
a
b
c

sedsed -d '$!h;d;x' test
PATT:a$
HOLD
COMM !h
PATT:a$
HOLD:a$
COMM:d
PATT:b$
HOLD:a$
COMM !h
PATT:b$
HOLD:b$
COMM:d
PATT:c$
HOLD:b$
COMM !h
PATT:c$
HOLD:b$
COMM:d
在执行d之后,没有执行x,最后的pattern的确是空了,但为什么x没有被执行

如果有{}
sedsed -d '$!{h;d};x' test
PATT:a$
HOLD
COMM !{
COMM:h
PATT:a$
HOLD:a$
COMM:d
PATT:b$
HOLD:a$
COMM !{
COMM:h
PATT:b$
HOLD:b$
COMM:d
PATT:c$
HOLD:b$
COMM !{
COMM
PATT:b$
HOLD:c$
b
最后执行了x
但是我现在想的是x应该是每一次读取之后都执行啊?是因为如果pattern被d了之后,就不x了吗?

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
7 [报告]
发表于 2011-12-23 14:40 |只看该作者
df110341243 发表于 2011-12-23 14:34
呃 还是有问题 回复错了 我用sedsed仔细看了下
cat test
a

因为d执行了之后,马上转到程序头部了啊,后面的x当然不执行了

论坛徽章:
0
8 [报告]
发表于 2011-12-23 14:48 |只看该作者
cjaizss 发表于 2011-12-23 14:40
因为d执行了之后,马上转到程序头部了啊,后面的x当然不执行了

晕 犯傻了刚才 正解 非常非常感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP