LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: najia01

如何删除重复的行(sed或awk)

[复制链接]
发表于 2007-11-19 12:34:28 | 显示全部楼层
Post by najia01;778341
找到用一行命令解决的sed的解法:
sed "$!N;/^\(.*\)\n\1$/!P;D" file
具体什么意思,明天再讲,我得回去想想了。呵呵~~~~
:p


这种方法只对排序过的文件有效
回复 支持 反对

使用道具 举报

发表于 2007-11-19 15:09:07 | 显示全部楼层
发现sort -u可以直接得出结果。。。
回复 支持 反对

使用道具 举报

发表于 2010-11-18 17:16:28 | 显示全部楼层

请教

Post by springwind426;1784562
sort -u  需要排序

awk '!a[$0]++'


这个指令非常好用,有高手解释一下吗?看不懂!
回复 支持 反对

使用道具 举报

发表于 2010-12-2 12:18:11 | 显示全部楼层
Post by higkoo;2120232
这个指令非常好用,有高手解释一下吗?看不懂!


新手弱问,是不是把模式部分理解为不匹配已经有的数组元素,然后因为默认动作是打印,所以就是这样了?
回复 支持 反对

使用道具 举报

发表于 2010-12-23 12:17:21 | 显示全部楼层
四楼的对
my friends, chenhong
my friends, chenhong
my teacher, liyong
my sister, wushiying
my teacher, liyong
my father, wuzhongyi
my father, wuzhongyi
这样的文件就无法正确处理了
springwind的awk方法最好,不过不理解,麻烦高手解释一下
回复 支持 反对

使用道具 举报

发表于 2010-12-24 10:16:57 | 显示全部楼层
sort -u  这个最简单
回复 支持 反对

使用道具 举报

发表于 2010-12-24 10:48:32 | 显示全部楼层
awk:

  1. awk '{if ($0!=line) print;line=$0}' file
复制代码
[/QUOTE]

[root@mail tmp]# awk '{if ($0!=line) print;line=$0}' a.tt
my friends, chenhong
my teacher, liyong
my sister, wushiying
my teacher, liyong
my father, wuzhongyi

这个只能过滤连续重复的啊。
还是这个帅
awk '!a[$0]++' a.tt
回复 支持 反对

使用道具 举报

发表于 2010-12-24 12:22:31 | 显示全部楼层
20楼的方法思路新颖,学习了
回复 支持 反对

使用道具 举报

发表于 2011-2-5 17:00:24 | 显示全部楼层
cat foo|sort |uniq -d就好了
回复 支持 反对

使用道具 举报

发表于 2011-2-5 17:02:03 | 显示全部楼层
嗯,sort -u也不错.这种上sed awk就没必要了.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表