sublime repetidas remover quitar online líneas lineas linea leer fotos fichero encontrar eliminar duplicados duplicadas buscar archivos file count find duplicates lines

file - repetidas - Encuentre líneas duplicadas en un archivo y cuente cuántas veces se duplicó cada línea?



quitar líneas duplicadas (7)

Esto solo imprimirá líneas duplicadas , con conteos:

sort FILE | uniq -cd

o, con opciones largas de GNU (en Linux):

sort FILE | uniq --count --repeated

en BSD y OSX tienes que usar grep para filtrar líneas únicas:

sort FILE | uniq -c | grep -v ''^ *1 ''

Para el ejemplo dado, el resultado sería:

3 123 2 234

Si desea imprimir recuentos para todas las líneas, incluidas las que aparecen solo una vez:

sort FILE | uniq -c

o, con opciones largas de GNU (en Linux):

sort FILE | uniq --count

Para la entrada dada, la salida es:

3 123 2 234 1 345

Para ordenar la salida con las líneas más frecuentes en la parte superior, puede hacer lo siguiente (para obtener todos los resultados):

sort FILE | uniq -c | sort -nr

o, para obtener solo líneas duplicadas, las más frecuentes primero:

sort FILE | uniq -cd | sort -nr

en OSX y BSD el último se convierte en:

sort FILE | uniq -c | grep -v ''^ *1 '' | sort -nr

Supongamos que tengo un archivo similar al siguiente:

123 123 234 234 123 345

Me gustaría saber cuántas veces se duplicó ''123'', cuántas veces se duplicó ''123'', etc. Así que, idealmente, la salida sería como:

123 3 234 2 345 1


Para buscar y contar líneas duplicadas en varios archivos, puede probar el siguiente comando:

sort <files> | uniq -c | sort -nr

o:

cat <files> | sort | uniq -c | sort -nr



Suponiendo que hay un número por línea:

sort <file> | uniq -c

También puede usar el indicador más detallado --count con la versión GNU, por ejemplo, en Linux:

sort <file> | uniq --count


Suponiendo que tenga acceso a un shell estándar de Unix y / o un entorno cygwin:

tr -s '' '' ''/n'' < yourfile | sort | uniq -d -c ^--space char

Básicamente: convierta todos los caracteres de espacio a saltos de línea, luego ordene la salida en tranlsada y alimente eso a uniq y cuente líneas duplicadas.


Vía awk :

awk ''{dups[$1]++} END{for (num in dups) {print num,dups[num]}}'' data

En awk ''dups[$1]++'' , la variable $1 contiene todo el contenido de column1 y los corchetes son acceso de matriz. Por lo tanto, para cada primera columna de línea en data archivo de data , el nodo de la matriz denominada dups se incrementa.

Y al final, hacemos un bucle sobre la matriz de dups con num como variable e imprimimos primero los números guardados y luego su número de valor duplicado por dups[num] .

Tenga en cuenta que su archivo de entrada tiene espacios al final de algunas líneas, si los borra, puede usar $0 en lugar de $1 en el comando anterior :)


En Windows usando "Windows PowerShell" utilicé el comando mencionado a continuación para lograr esto

Get-Content ./file.txt | Group-Object | Select Name, Count

También podemos usar el cmdlet where-object para filtrar el resultado.

Get-Content ./file.txt | Group-Object | Where-Object { $_.Count -gt 1 } | Select Name, Count