免费注册 查看新帖 |

Chinaunix

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

sed删除重复的行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-05 19:14 |只看该作者 |倒序浏览
请教大家sed能实现以下的功能吗?
a.txt部分内容如下
slkdjf
dslkfj
lsdjf
lsdkj  同志(收)


lkjg
jdsfjdjf
dsd
aaa  同志(收)


dsjf

kdfsdj
aaa  同志(收)

我想实现的是:写一个sed脚本文件
查找所有包含  同志(收)  这几个字的行,然后删除这些重复的行以及它的上三行和下三行,再将剩余的内容定向到b.txt
当然所有重复的行都要保留一个.

难道我说的不够清楚?
我的意识是:如果a.txt中有5个  aaa  同志(收)  的行,就删除后面的4个,以及它们的上三行和下三行.
重复内容不光是 同志(收) 这几个字,而是包括 同志(收) 前面的字.

[ 本帖最后由 26933062 于 2007-7-5 19:57 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-07-05 19:22 |只看该作者
sed -n '/同志(收)/p'     ??

论坛徽章:
0
3 [报告]
发表于 2007-07-05 19:52 |只看该作者

回复 #2 doctorjxd 的帖子

你这是打印包含 同志(收)  的行吧,

论坛徽章:
0
4 [报告]
发表于 2008-05-23 14:31 |只看该作者
uniq file

awk '{if ($0!=line) print;line=$0}' file

sed -f rmdup.sed yourfile

rmdup.sed :
$!N
s/^\(.*\)\n\1$/&/
t RmLn
P
: RmLn
D

[ 本帖最后由 temin 于 2008-5-23 14:34 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP