如何组合行和数字

Pat*_*Pat 4 awk

我有一个txt文件,如:

Large 0
Large 0 
Large 1
Large 2
Medium 0
Medium 1
Medium 1    
small 1
small 3
Run Code Online (Sandbox Code Playgroud)

我想组合所有不同的大、中和小行,以便输出如下内容:

Large 3
Medium 2
Small 4
Run Code Online (Sandbox Code Playgroud)

我有另一个类似的问题,但另一个文件只是单词,例如:

MVCC Cybersecurity
MVCC Cybersecurity
MVCC Cybersecurity
Run Code Online (Sandbox Code Playgroud)

我希望它输出度数的总和,所以它表示网络安全的总次数。

MVCC 3
Run Code Online (Sandbox Code Playgroud)

小智 5

perl -lane '@F == 2 and $h{$F[0]}+=$F[1]}{print "$_ $h{$_}" for keys %h' yourfile
Run Code Online (Sandbox Code Playgroud)

读取是:当您的行恰好有 2 个字段时,然后使用第一个键的键的第二个字段更新哈希值。最后,只需打印键和相应的值。

散列 %h 的数据结构是:

%h = ( ... LARGE => running_sum, ... );

awk

awk '
   NF == 2 { seen[$1] += $2 }
   END{
      for(i in seen)
         print i, seen[i]
   }
' yourfile
Run Code Online (Sandbox Code Playgroud)