首页 > 解决方案 > Uniq 一列并打印出该列中的行数

问题描述

我有一个文件,带有标题

name, age, id, address 
Smith, 18, 201392, 19 Rand Street, USA
Dan, 19, 029123, 23 Lambert Rd, Australia
Smith, 20, 192837, 61 Apple Rd, UK
Kyle, 25, 245123, 103 Orange Rd, UK

我想整理出重复的名字,所以结果是:

Smith, 18, 201392, 19 Rand Street, USA
Dan, 19, 029123, 23 Lambert Rd, Australia
Kyle, 25, 245123, 103 Orange Rd, UK

# prints 3 for 3  unique rows at column name

我试过了sort -u -t, -k1,1 fileawk -F"," '!_[$1]++' file但它不起作用,因为我的地址中有逗号。

标签: shellawk

解决方案


好吧,您更改了自 OP 以来的功能,但这应该会在您的文件中获得唯一的名称(考虑到它是 named data),未排序:

#!/bin/bash
sed "1 d" data | awk -F"," '!_[$1]++ { print $1 }'

如果需要排序,追加| sort到上面的命令行。

并附| wc -l加到命令行以计算行数。


推荐阅读