shell - 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 file
,awk -F"," '!_[$1]++' file
但它不起作用,因为我的地址中有逗号。
解决方案
好吧,您更改了自 OP 以来的功能,但这应该会在您的文件中获得唯一的名称(考虑到它是 named data
),未排序:
#!/bin/bash
sed "1 d" data | awk -F"," '!_[$1]++ { print $1 }'
如果需要排序,追加| sort
到上面的命令行。
并附| wc -l
加到命令行以计算行数。
推荐阅读
- php - 在会话中升级到 PHP 7 后出现问题
- php - 如何解决重复数据
- mongodb - 与mongodb中不区分大小写的完全匹配
- r - 每次按照特定分布分配值时如何获得相同的结果
- javascript - 与 Reactstrap 反应的常见删除模态组件
- r - 闪亮的应用程序功能,用于提示用户输入并将输入分配给变量
- python - Traitlets:“实例字典”的最佳方式?
- xamarin.forms - 'BBDXamarinForms.Droid.Library.Config.BBDXamarinConfig' 的类型初始化程序引发异常
- jenkins - 我可以通过环境变量获取 jenkins xunit 结果吗?
- ios - Tableview 不在滚动视图内滚动?这是什么原因?