如果字段重复则删除行

发布于 2024-08-28 04:38:28 字数 173 浏览 4 评论 0原文

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

我见过的删除重复行的一个例子是:

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

尝试使用它作为基础,但没有运气(我认为将 $0 更改为 $1 可以解决问题,但似乎不起作用)。

Looking for an awk (or sed) one-liner to remove lines from the output if the first field is a duplicate.

An example for removing duplicate lines I've seen is:

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

Tried using it for a basis with no luck (I thought changing the $0's to $1's would do the trick, but didn't seem to work).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

喜你已久 2024-09-04 04:38:28
awk '{ if (a[$1]++ == 0) print $0; }' "$@"

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

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

This is a standard (very simple) use for associative arrays.

烙印 2024-09-04 04:38:28

这是删除重复项的方法

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

this is how to remove duplicates

awk '!_[$1]++' file
安人多梦 2024-09-04 04:38:28

如果您愿意使用 Perl:

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

-a 会自动将行分割到 @F 数组中,该数组的索引从 0 开始
%a 哈希会记住第一个字段是否已被看到


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

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

If you're open to using Perl:

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

-a autosplits the line into the @F array, which is indexed starting at 0
The %a hash remembers if the first field has already been seen


This related solution assumes your field separator is a comma, rather than whitespace

perl -F, -ane 'print if ! $a{$F[0]}++' file
流心雨 2024-09-04 04:38:28

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

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

it print the unique as well as single value of the duplicates

awk '!a[$1]++' file_name
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文