要按行内容去重 file.csv
文件(保留唯一行),可以使用以下任一方法:
方法1:使用 awk
(推荐,保持原始顺序)
awk 'NR==1 {print; next} !seen[$0]++' file.csv
说明:
-
NR==1
先打印标题行 -
!seen[$0]++
对后续行去重,保留首次出现的行 - 优点:保持非重复行的原始顺序
方法2:使用 sort
+ uniq
(改变行顺序)
(head -n 1 file.csv; tail -n +2 file.csv | sort -u)
说明:
-
head -n 1
提取标题行 -
tail -n +2
跳过标题行处理剩余内容 -
sort -u
排序并去重 - 注意:会按字母顺序重新排列数据行
输出效果(示例):
name,jobNo,userId,deviceId
马克尔,Michael,xxxxx,xxxxxx
验证结果:
# 查看去重后总行数(标题+1行数据)
awk 'NR==1 {print; next} !seen[$0]++' file.csv | wc -l
重要提示:
- 如果数据中有空格或特殊字符,上述命令仍可安全处理
- 如需按特定列去重(而非整行),需修改
awk
的$0
为列号(如$1,$2
)