标签: uniq

用awk删除包含唯一第一个字段的行?

希望仅打印具有重复的第一个字段的行.例如,从看起来像这样的数据:

1 abcd
1 efgh
2 ijkl
3 mnop
4 qrst
4 uvwx
Run Code Online (Sandbox Code Playgroud)

应打印出来:

1 abcd
1 efgh
4 qrst
4 uvwx
Run Code Online (Sandbox Code Playgroud)

(仅供参考 - 我的数据中第一个字段的长度不总是1个字符)

sorting awk grep sed uniq

4
推荐指数
1
解决办法
1795
查看次数

如何在散列数组中找到由多个键分组的最大值?

有这种结构的数据.将按'c'按升序排列.

[ { 'a' => 1, 'b' => 1, 'c' =>  1, 'd' => '?' },
  { 'a' => 1, 'b' => 1, 'c' =>  2, 'd' => '?' },
  { 'a' => 1, 'b' => 1, 'c' =>  3, 'd' => '?' },
  { 'a' => 1, 'b' => 2, 'c' =>  4, 'd' => '?' },
  { 'a' => 1, 'b' => 2, 'c' =>  5, 'd' => '?' },
  { 'a' => 2, 'b' => 1, 'c' …
Run Code Online (Sandbox Code Playgroud)

ruby arrays hash max uniq

4
推荐指数
1
解决办法
1577
查看次数

使perl数组独一无二

我目前遇到一个非常简单的问题,即从反引用的shell命令中捕获输出.我很抱歉问题很简单.

我有一些排序数组(@valid_runs),我知道它包含连续的重复元素.我想使用反引号将此数组回显给uniq.我想捕获数组中的STDOUT.我试图这样做.

@unique_valids = `echo '@valid_runs' | uniq`;
print @unique_valids;
Run Code Online (Sandbox Code Playgroud)

这个打印声明什么都没有.就此而言,这也不是.

@unique_valids = `echo '@valid_runs'`;
print @unique_valids;
Run Code Online (Sandbox Code Playgroud)

我知道如何使用uniq和echo.这对我来说似乎很奇怪.我认为这与perl数组有关,而不是正确使用这些命令.我在其他地方搜索了一下,所以请不要因为解决方案看起来微不足道而感谢我.感谢你的宝贵时间.

关于解决方案的说明:TLP的解决方案是处理uniq问题最直接的解决方案.我很灵活,因为所有的回复都表明没有系统调用这个问题.如果Perl的uniq功能与Unix的uniq相同,那么数组应该保持排序.

如果您不关心排序结果,John Corbett的解决方案效果很好.

unix arrays perl uniq

4
推荐指数
3
解决办法
1183
查看次数

bash添加具有相同第一列的列

我有一个文件,在第一列中有一个名称,在第二列中有计数.它按名称排序.

    dan 3355
    dan 667
    dan 889
    frank 8
    frank 99
    frank 90
    ian 9
Run Code Online (Sandbox Code Playgroud)

我想结合所有相同的名称并输出每个名称的总数:

    dan 4911
    frank 197
    ian 9
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用uniq来获取相同行的总数,但是如何保留我在数据中的计数?

unix bash uniq

4
推荐指数
1
解决办法
1615
查看次数

比较同一文件中的两行

给定如下文件:-

01/09/2005
02/09/2005
03/09/2006
03/09/2006
Run Code Online (Sandbox Code Playgroud)

我希望比较最后两行是否相同,如果相同则返回 1,否则返回 0。

我可以使用最后两个 cat tail -2

unix linux diff cmp uniq

3
推荐指数
1
解决办法
6589
查看次数

如何使用uniq -c选项进行自定义格式化?

来自维基百科:

uniq
-c Generate an output report in default style except that each line is preceded by a count of the number of times it occurred. If this option is specified, the -u and -d options are ignored if either or both are also present.
Run Code Online (Sandbox Code Playgroud)

在我的机器上,它取计数并将其放在每一行的开头.我想要的是将它放在行尾,逗号后面.如何才能做到这一点?

例:

aa
aa
bb
cc
cc
dd
Run Code Online (Sandbox Code Playgroud)

应改为:

aa,2
bb,1
cc,2
dd,1
Run Code Online (Sandbox Code Playgroud)

unix uniq

3
推荐指数
1
解决办法
4018
查看次数

使用awk获取列的最大值,用于另一列的每个唯一值

所以我有一个文件,如:

10 1 abc
10 2 def
10 3 ghi
20 4 elm
20 5 nop
20 6 qrs
30 3 tuv
Run Code Online (Sandbox Code Playgroud)

我想为第一列的每个值获取第二列的最大值,即:

10 3 ghi
20 6 qrs
30 3 tuv
Run Code Online (Sandbox Code Playgroud)

如何使用awk或类似的unix命令?

sorting bash awk uniq

3
推荐指数
2
解决办法
2152
查看次数

uniq -c 不带额外空格

uniq -c (或替代方案)中是否有一个选项不会在计数周围添加额外的空格?目前我通常通过 sed 进行管道传输,如下所示:

sort | uniq -c | sed 's/^ *\([0-9]*\) /\1 /'
Run Code Online (Sandbox Code Playgroud)

但这似乎有点多余,特别是考虑到我必须经常这样做。

shell uniq

3
推荐指数
1
解决办法
4799
查看次数

从 csv 文件中的列获取唯一值

我有以下输入:

no,zadrar,MENTOR,rossana@xt.com,AGRATE
no,mittalsu,MENTOR,rossana@xt.com,GREATER NOIDA
no,abousamr,CADENCE,selim@xt.com,CROLLES
no,lokinsks,MENTOR,sergey@xt.com,CROLLES
no,billys,MENTOR,billy@xt.com,CROLLES
no,basiles1,CADENCE,stephane@xt.com,CASTELLETTO
no,cesaris1,CADENCE,stephane@xt.com,CROLLES
Run Code Online (Sandbox Code Playgroud)

我只想获取第 4 列唯一的行:

no,abousamr,CADENCE,selim@xt.com,CROLLES
no,lokinsks,MENTOR,sergey@xt.com,CROLLES
no,billys,MENTOR,billy@xt.com,CROLLES
Run Code Online (Sandbox Code Playgroud)

我尝试过:

awk -F"," '{print $4}' $vendor.csv | sort | uniq -u
Run Code Online (Sandbox Code Playgroud)

但我得到:

    selim@xt.com
    sergey@xt.com
    billy@xt.com
Run Code Online (Sandbox Code Playgroud)

csv shell awk uniq

3
推荐指数
1
解决办法
2万
查看次数

从 HoA 值中获取唯一元素并打印

我有一个带有某些值的 HoA。

我只需要来自 HoA 的独特元素。

预期结果:

Key:1
Element:ABC#DEF
Key:2
Element:XYZ#RST
Key:3
Element:LMN
Run Code Online (Sandbox Code Playgroud)

下面是我的脚本:

#!/usr/bin/perl

use strict; use warnings;
use Data::Dumper;

my %Hash = (
            '1' => ['ABC', 'DEF', 'ABC'],
            '2' => ['XYZ', 'RST', 'RST'],
            '3' => ['LMN']
);

print Dumper(\%Hash);

foreach my $key (sort keys %Hash){
    print "Key:$key\n";
    print "Element:", join('#', uniq(@{$Hash{$key}})), "\n";
}

sub uniq { keys { map { $_ => 1 } @_ } };
Run Code Online (Sandbox Code Playgroud)

该脚本向我抛出以下错误:

Experimental keys on scalar is now forbidden at test.pl line 19. …
Run Code Online (Sandbox Code Playgroud)

perl hash uniq

3
推荐指数
1
解决办法
81
查看次数

标签 统计

uniq ×10

unix ×4

awk ×3

arrays ×2

bash ×2

hash ×2

perl ×2

shell ×2

sorting ×2

cmp ×1

csv ×1

diff ×1

grep ×1

linux ×1

max ×1

ruby ×1

sed ×1