自学内容网 自学内容网

文件去除重复行

1. python实现

def remove_duplicates(input_file, output_file):
    seen_lines = set()
    with open(input_file, 'r') as infile, open(output_file, 'w') as outfile:
        for line in infile:
            if line not in seen_lines:
                outfile.write(line)
                seen_lines.add(line)

# 使用示例
remove_duplicates('input.txt', 'output.txt')

2. shell实现排序并去重 

sort input.txt | uniq > output.txt

3. shell实现保留原顺序去重 

awk '!seen[$0]++' input.txt > output.txt
  • $0$0awk 中的内置变量,表示当前行的内容。每次处理一行时,$0 就是该行的文本。

  • seen[$0]seen 是一个数组,seen[$0] 表示当前行内容 $0 是否已经在 seen 数组中记录过。

    • seen[$0]0(或 null)时,表示这是第一次遇到这一行内容。

    • seen[$0] 为非零值时,表示这一行内容已经出现过。

  • ++:自增运算符。seen[$0]++ 会在 seen[$0] 的当前值上加 1。

    • awk 第一次遇到某行内容时,seen[$0]0seen[$0]++ 之后会变为 1

    • 如果再次遇到同样的行,seen[$0] 就已经是 1,所以 seen[$0]++ 会继续增加,但这时返回的是非零值。

  • !seen[$0]++! 是逻辑取反运算符,表示“非”的意思。

    • !seen[$0]++ 的含义是:如果 seen[$0]++ 的结果为 0(即之前没见过该行),那么取反后为 true,表示输出该行内容。

    • 如果 seen[$0]++ 的结果为非零(即之前见过该行),取反后为 false,不输出该行内容。


原文地址:https://blog.csdn.net/akdjfhx/article/details/143781713

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!