1.11. Buscar, ordenar y asociar ficheros
1.11.5. «uniq»
Este comando te ayuda a identificar y eliminar duplicados. Se ha de utilizar con entradas ordenadas, ya que la comparación se realiza solo entre líneas adyacentes, lo que significa que primero hay que utilizar el comando sort
antes que el comando uniq
. Se muestran a continuación las opciones de uso común.
-u
muestra solo las entradas únicas.-d
muestra solo las entradas duplicadas.-D
muestra todas las copias de duplicados.-c
prefijo de conteo.-i
ignora mayúsculas y minúsculas al determinar duplicados.-f
omite los primeros N campos la separación de campo; se basa solo en uno o más caracteres de espacio/tabulación.-s
omite los primeros N-w
restringe la comparación a los primeros N
De forma predeterminada, uniq
retiene sólo una copia de las líneas duplicadas.
$ cat sistemas.txt
GWAS RNA-Seq WES GWAS ChIP-Seq RNA-Seq NGS RNA-Seq
# Ordena y elimina los duplicados
$ sort sistemas.txt | uniq
ChIP-Seq GWAS NGS RNA-Seq WES
# Ordena e imprime únicamente las ocurrencias no repetidas
$ sort sistemas.txt | uniq -u
ChIP-Seq NGS WES
# Ordena e imprime únicamente las ocurrencias repetidas
$ sort sistemas.txt | uniq -d
GWAS RNA-Seq
# Ordena por número de ocurrencia
$ sort sistemas.txt | uniq -c | sort -nr
3 RNA-Seq 2 GWAS 1 WES 1 NGS 1 ChIP-Seq
Si continuamos con el fichero hg38_RefSeq para eliminar líneas duplicadas consecutivas, se utiliza el comando uniq
. Es importante recordar que, para una eliminación completa de duplicados, es necesario ordenar el archivo con sort
antes de utilizar uniq
:
$ cat hg38_RefSeq | cut -f 2,4| sort -2rn | uniq