首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除重复行而不排序

删除重复行而不排序
EN

Stack Overflow用户
提问于 2012-07-18 07:14:11
回答 8查看 67.2K关注 0票数 133

我在Python中有一个实用程序脚本:

代码语言:javascript
运行
复制
#!/usr/bin/env python
import sys
unique_lines = []
duplicate_lines = []
for line in sys.stdin:
  if line in unique_lines:
    duplicate_lines.append(line)
  else:
    unique_lines.append(line)
    sys.stdout.write(line)
# optionally do something with duplicate_lines

这个简单的功能(不需要首先排序的uniq,稳定的排序)必须作为一个简单的UNIX实用程序提供,不是吗?也许是管子里的过滤器的组合?

问的理由:在一个我不能从任何地方执行Python的系统上需要这个功能。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-07-18 07:17:58

UNIX Bash脚本博客suggests

代码语言:javascript
运行
复制
awk '!x[$0]++'

这个命令告诉awk要打印哪些行。变量$0保存一行的全部内容,方括号是数组访问。因此,对于文件的每一行,如果先前未设置(!)该节点的内容,则会递增数组x的节点,并打印该行。

票数 317
EN

Stack Overflow用户

发布于 2013-12-18 00:39:12

一个迟来的答案--我刚刚遇到了一个副本--但也许值得补充一下……

@1_CR答案背后的原则可以写得更简洁,使用cat -n而不是awk来添加行号:

代码语言:javascript
运行
复制
cat -n file_name | sort -uk2 | sort -n | cut -f2-

  • 使用cat -n
  • sort -u删除重复数据(-k2表示‘排序关键字从字段2开始’)
  • 使用D12按预置编号进行排序H213H114使用D15删除行号(D16表示‘选择字段2直到结束’)H217F218
票数 79
EN

Stack Overflow用户

发布于 2017-08-22 11:32:35

要从2个文件中删除重复项,请执行以下操作:

代码语言:javascript
运行
复制
awk '!a[$0]++' file1.csv file2.csv
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11532157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档