+ -
当前位置:首页 → 问答吧 → 求助!比较特殊的去除重复行

求助!比较特殊的去除重复行

时间:2011-05-04

来源:互联网

file.txt

http://www.sina.com.cn

http://www.sina.com.cn

http://www.sina.com.cn

http://www.sina.com.cn

http://www.sina.com.cn

################

http://www.163.com.cn

http://www.163.com.cn

http://www.163.com.cn

http://www.163.com.cn

http://www.163.com.cn

################

http://www.163.com

http://www.163.com

http://www.163.com

http://www.163.com

http://www.163.com

################



我想得到的结果是

http://www.sina.com.cn

################

http:/www.163.com.cn

################

http://www.163.com

################

用sort -u 得到的结果 不太一样
这个怎么处理??

作者: vitas333_cu   发布时间: 2011-05-04

每两个
################
之间的每一行内容都一样?

作者: cjaizss   发布时间: 2011-05-04

本帖最后由 yinyuemi 于 2011-05-04 13:05 编辑

回复 vitas333_cu
  1. awk '!/^#*$/&&++a[$1]==1{print }/^#*$/{delete a;print}' file
  2. http://www.sina.com.cn
  3. ################
  4. http://www.163.com.cn
  5. ################
  6. http://www.163.com
  7. ################
复制代码

作者: yinyuemi   发布时间: 2011-05-04

try:
  1. awk '/^http/&&!a[$0]++{print $0"\n\n################\n"}' urfile
复制代码

作者: ly5066113   发布时间: 2011-05-04

  1. for line in `grep http: urfile | sort -u`
  2. do
  3.     echo $line
  4.     echo
  5.     echo "################"
  6.     echo
  7. done
复制代码

作者: Shell_HAT   发布时间: 2011-05-04

如果文件不是以#作为标志。
如下:

http://www.sina.com.cn

http://www.sina.com.cn

http://www.sina.com.cn

http://www.sina.com.cn

http://www.sina.com.cn

----------------------

http://www.163.com.cn

http://www.163.com.cn

http://www.163.com.cn

http://www.163.com.cn

http://www.163.com.cn

----------------------

http://www.163.com

http://www.163.com

http://www.163.com

http://www.163.com

http://www.163.com

----------------------




得到的结果是
http://www.sina.com.cn

----------------------

http:/www.163.com.cn

----------------------

http://www.163.com

----------------------

作者: vitas333_cu   发布时间: 2011-05-04

回复 yinyuemi


    不行

作者: vitas333_cu   发布时间: 2011-05-04

其实我想问的就是LZ所要的结果和uniq的结果有什么不一样呢?

作者: cjaizss   发布时间: 2011-05-04

本帖最后由 yinyuemi 于 2011-05-04 13:17 编辑

回复 vitas333_cu

思路一样的啊,
    awk '!/^-*$/&&++a[$1]==1{print }/^-*$/{delete a;print}' file

or:

awk '/http/&&++a[$1]==1{print }!/^http/{delete a;print}' file

作者: yinyuemi   发布时间: 2011-05-04

回复 cjaizss


    老哥, 确实不一样啊。

会把 #### 去掉 重复的。    只有1个了。

而且 url地址会单独写在开头每行中。

作者: vitas333_cu   发布时间: 2011-05-04



QUOTE:
回复  cjaizss


    老哥, 确实不一样啊。

会把 #### 去掉 重复的。    只有1个了。

而且 url ...
vitas333_cu 发表于 2011-05-04 13:16




    我说的是uniq,又不是sort -u

作者: cjaizss   发布时间: 2011-05-04

  1. echo 'http://www.sina.com.cn
  2. http://www.sina.com.cn
  3. http://www.sina.com.cn
  4. http://www.sina.com.cn
  5. http://www.sina.com.cn
  6. ################
  7. http://www.163.com.cn
  8. http://www.163.com.cn
  9. http://www.163.com.cn
  10. http://www.163.com.cn
  11. http://www.163.com.cn
  12. ################
  13. http://www.163.com
  14. http://www.163.com
  15. http://www.163.com
  16. http://www.163.com
  17. http://www.163.com
  18. ################' |uniq
  19. http://www.sina.com.cn
  20. ################
  21. http://www.163.com.cn
  22. ################
  23. http://www.163.com
  24. ################
复制代码
这不是你想要的吗?

作者: cjaizss   发布时间: 2011-05-04

  1. cat file.txt|sed '/^$/d'|uniq
复制代码
或者
  1. cat file.txt|awk '!/^$/{a=$1;if(a==b){next}else{print};b=$1}'
复制代码

作者: yhywl   发布时间: 2011-05-04

回复 yinyuemi

不行啊, 测试后 ,原文输出了

作者: vitas333_cu   发布时间: 2011-05-04

回复 vitas333_cu


    dos2unix your file

作者: yinyuemi   发布时间: 2011-05-04

回复 yinyuemi

就是在 linux下 操作的。  我还是把源文件 拿出来吧

作者: vitas333_cu   发布时间: 2011-05-04

awk '$0!=v&&NF;NF{v=$0}' file

作者: ywlscpl   发布时间: 2011-05-04

热门下载

更多