免费注册 查看新帖 |

Chinaunix

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

求助这个问题用sed怎么写 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-11 23:41 |只看该作者 |倒序浏览
一段内容,中间一段是这样
.....
.....
start
a
b
c
d
end
....
....
如果我想删除start end之间的第n条应该怎么写呢

论坛徽章:
0
2 [报告]
发表于 2006-11-12 00:01 |只看该作者
先根据特征取之间的,然后再删除某行

论坛徽章:
0
3 [报告]
发表于 2006-11-12 00:10 |只看该作者
原帖由 Qiangxi 于 2006-11-12 00:01 发表
先根据特征取之间的,然后再删除某行

我想知道这删除某行怎么操作

论坛徽章:
0
4 [报告]
发表于 2006-11-12 01:05 |只看该作者

回复 1楼 fido05 的帖子

sed -n '/start/,/end/p' urfile | sed '/?d/'   
? 代表你要删的那一行

论坛徽章:
0
5 [报告]
发表于 2006-11-12 10:10 |只看该作者
可以这样试试,区段内多于9行的文本可以用字母补数。
比如删除第 3 行如下,删除其他行请修改红色部分

------------------------
1{x;s/^/+0123456789/;x}
/start/,/end/ {
b a
}
b
:a
{
x;s/.//;x
G
/\n3/d
s/\n.*//
}

论坛徽章:
0
6 [报告]
发表于 2006-11-12 10:38 |只看该作者
原帖由 letwave 于 2006-11-12 01:05 发表
sed -n '/start/,/end/p' urfile | sed '/?d/'   
? 代表你要删的那一行

这个我怎么就没想到呢..

论坛徽章:
0
7 [报告]
发表于 2006-11-12 13:01 |只看该作者
唉..这个好像有点不对...怎么写回文本.
还有那个看不懂哈

论坛徽章:
0
8 [报告]
发表于 2006-11-12 22:31 |只看该作者
假如删除第3条,这样为什么不行呢
/#start/,/#end/{
n
n
d
q
}

论坛徽章:
0
9 [报告]
发表于 2006-11-13 15:31 |只看该作者
为什么要指定#end? sed '/#start/{ n;n;d; }' urfile 这样是可以的。
我试了一下,指定end的时候,q没有起作用。至于为什么,我也不清楚
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP