如果字段重复,则删除行

时间:2010-04-08 23:14:24

标签: sed awk

如果第一个字段是重复字段,则查找awk(或sed)单行以从输出中删除行。

删除我看过的重复行的示例是:

awk 'a !~ $0; {a=$0}'

尝试使用它作为没有运气的基础(我认为将$ 0改为1美元就可以了,但似乎没有用)。

4 个答案:

答案 0 :(得分:26)

awk '{ if (a[$1]++ == 0) print $0; }' "$@"

这是关联数组的标准(非常简单)用法。

答案 1 :(得分:9)

这是删除重复的方法

awk '!_[$1]++' file

答案 2 :(得分:1)

如果你打开使用Perl:

perl -ane 'print if ! $a{$F[0]}++' file

-a自动将该行放入@F数组,该数组从0开始编制索引 如果已经看到第一个字段,则%a哈希会记住

此相关解决方案假设您的字段分隔符是逗号,而不是空格

perl -F, -ane 'print if ! $a{$F[0]}++' file

答案 3 :(得分:0)

它打印重复项的唯一值和单个值

awk '!a[$1]++' file_name