gpt4 book ai didi

linux - awk 命令,打印在 csv 文件中只出现一次的行

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:45:40 25 4
gpt4 key购买 nike

我有一个可能有重复的 csv 文件。我需要 awk 命令的帮助,该命令仅打印那些在文件中只出现一次的行。

例如:输入文件:

a,b
a,c
a,d
a,b
a,c
b,e
b,f
b,d
b,f
b,e

输出:

a,d
b,d

感谢您的帮助。

最佳答案

使用awk:

awk '{arr[$0]++}END{for(i in arr)if(arr[i]==1)print i}' infile

排序和唯一

$ sort file | uniq -u # -u generates unique entries; -d nonunique
a,d
b,d

测试结果:

$ cat file
a,b
a,c
a,d
a,b
a,c
b,e
b,f
b,d
b,f
b,e

$ awk '{arr[$0]++}END{for(i in arr)if(arr[i]==1)print i}' file
a,d
b,d

解释:

  • arr[$0]++ $0为当前行/记录,用作数组键,arr为数组, arr[$0]++ 保存键的出现次数,所以每当 awk 发现重复的键时,计数将递增 1。

  • 所以在 block 的最后,遍历数组,如果计数等于一,打印这样的数组键。

关于linux - awk 命令,打印在 csv 文件中只出现一次的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46612706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com