正确使用awk、sort和uniq

问题描述 投票:0回答:2

我正在处理一个大(500MB+).csv 文件。我想一次一页打印给定列的唯一值,以便于查看。

awk F, '{print $}' sort | uniq

这会产生一个快速滚动的列表,删除了我感兴趣的 75% 的值。

awk uniq
2个回答
2
投票

尝试下面的 awk 命令,它将保留原始顺序以导出 #1 列上的唯一值(您可以轻松调整到另一列)

awk -F, '!a[$1]++' file

如果你需要对结果进行排序,那么在 awk 之后添加排序命令,这将为你节省大量时间。

awk -F, '!a[$1]++' file |sort

0
投票

对 awk 的 uniq 子函数进行排序并限制打印 ex: awk '{print | “排序 | uniq”}' file.txt

Una mejor alternativa para archivos con millones de lineas, es unicar los valores usandolos como indice en un matriz a[$i]++, luego los valores unicados como indice se insertar en una nueva matriz como elementos y adiciona un index numerico b[ j++]=i,使用 awk“asort()”函数的元素索引的连续顺序,最终完成。

Para esto se procede de la siguiente manera:

$i=columna que desea unicar y sortear ($1,$2,$i..)

awk -F";" '{a[$i]++}END{for(i in a)b[j++]=i;n=asort(b);while(n>0)print b[n--]}' file.csv

(G·卡斯特罗)

© www.soinside.com 2019 - 2024. All rights reserved.