具有 3 列的示例输入数据,第 1 列和第 3 列具有重复值,需要使用它们的重复计数唯一地打印它们。
sort -u 在某种意义上确实有帮助,但无法打印与第一列和第三列相关的重复值的出现。
Input :
3210 -06:00 5172 -06:00 3335 -07:00 3258 -05:00 B 3322 -05:00 B 5097 -05:00 C 3238 -06:00 C 5364 -05:00 C 3366 -06:00 C 3293 -06:00
输出 :
A(2) -06:00 A(1) -07:00 A(1) -05:00 乙(2) -05:00 C(3) -06:00 C(1) -05:00
或者
输出 :
A 2 -06:00 1 -07:00 1 -05:00 乙 2 -05:00 C 3 -06:00 C 1 -05:00
不完全是您想要的格式,但符合所有其他要求:
awk '{print $1" "$3}' <inFile> | sort | uniq -c
在英语中,使用 awk 仅打印第一列和第三列,然后排序,然后使用 count 进行 uniq。
请注意,输出可能未排序。
sort
如果需要,请通过它。代码将输入的第一个和第三个字段作为一对一起出现的次数存储在
count
数组中(第一个和第三个字段作为索引)。最后,我们循环遍历数组的索引,将它们分成原始的第一个和第三个字段(分别为 asfield[1]
和第三个字段field[2]
),并将它们与所需格式的计数一起输出。在替代格式中:
如果输入文件使用单个空格作为字段分隔符(否则使用
awk '{ print $1,$3 }'
代替cut
):要交换前两列:
给定输入使用
cut
,sort
和uniq
:sed
使用
datamash
和sed
:输出: