Pregunta 1¿Qué líneas trata uniq como duplicadas?
Herramientas de formateo de texto — sort / uniq / cut / wc / tr / tee
Este artículo forma parte del Curso de Linux, con el que dominarás desde cero habilidades prácticas de Linux, desde los comandos básicos hasta los scripts de shell.
Practica el orden con sort -n, el conteo de duplicados con sort | uniq -c, la extracción de columnas con cut -d',' -f1, el conteo de líneas con wc -l, la traducción tr 'a-z' 'A-Z' y la salida doble de tee, un comando a la vez con diagramas y terminal.
Ordenar líneas — sort
En este artículo practicarás seis comandos de formateo de texto, uno a la vez: sort / uniq / cut / wc / tr / tee. El primero es sort. Reordena las líneas de la entrada en orden lexicográfico (carácter por carácter). Usa sort -n para ordenar las líneas como números y sort -r para el orden descendente. En orden lexicográfico, 10 va antes que 2 (se comparan los primeros caracteres 1 y 2), así que ordenar números requiere -n.
| Forma | Significado |
|---|---|
sort | Ordena las líneas en orden lexicográfico |
sort -n | Ordena las líneas por valor numérico |
sort -r | Invierte el orden (descendente) |
10 va antes que 2. Añade -n para el orden numérico.printf 'cherry\napple\nbanana\n' > words.txt # crea un archivo de 3 líneas
sort words.txt # apple banana cherry (orden lexicográfico)
sort -r words.txt # cherry banana apple (descendente)
printf '100\n9\n25\n' > scores.txt # crea un archivo numérico
sort scores.txt # 100 25 9 (el 1 va primero)
sort -n scores.txt # 9 25 100 (orden numérico)
Agrupar duplicados — uniq
uniq agrupa en una sola las líneas idénticas que están una junto a otra. Nunca mira los duplicados alejados, así que normalmente se ejecuta sort primero para juntar las líneas iguales y se le pasa el resultado por una tubería. Con uniq -c, cada línea queda precedida por su número de apariciones: un conteo por categoría al instante.
| Forma | Significado |
|---|---|
uniq | Agrupa en una sola las líneas idénticas adyacentes |
sort file.txt | uniq | Ordena primero para agrupar también los duplicados alejados |
uniq -c | Antepone a cada línea su número de apariciones |
uniq solo ve los duplicados adyacentes: ejecuta sort primero para juntar las líneas iguales.printf 'banana\napple\nbanana\napple\n' > items.txt # crea un archivo de 4 líneas
sort items.txt # apple apple banana banana
sort items.txt | uniq # apple banana (duplicados eliminados)
sort items.txt | uniq -c # 2 apple / 2 banana (apariciones)
Extraer columnas — cut
cut divide cada línea según un delimitador y conserva solo los campos que pidas. El delimitador va después de -d y el número de campo después de -f, así que cut -d',' -f1 extrae la primera columna de un CSV. Para varios campos, enuméralos con comas como -f1,3. Es la herramienta para sacar solo las columnas que necesitas de un CSV o de un archivo de configuración separado por dos puntos.
| Forma | Significado |
|---|---|
cut -d',' -f1 | Extrae el campo 1 de líneas separadas por comas |
cut -d':' -f1 | Extrae el campo 1 de líneas separadas por : |
cut -d',' -f1,3 | Extrae los campos 1 y 3 juntos |
-d y solo se muestran los campos numerados en -f.printf 'root:x:0\nuser:x:1000\n' > passwd.txt # crea un archivo separado por dos puntos
cut -d':' -f1 passwd.txt # solo el campo 1 (los nombres)
cut -d':' -f1,3 passwd.txt # campos 1 y 3
Contar líneas, palabras y bytes — wc
wc cuenta las líneas, palabras y bytes de su entrada. Sin opciones muestra los tres números; wc -l muestra solo el número de líneas, wc -w solo el de palabras y wc -c solo el de bytes. La que más usarás es wc -l: alimentada desde una tubería, como en ls | wc -l, responde preguntas como «¿cuántos archivos hay?» o «¿cuántas líneas coinciden?».
| Forma | Significado |
|---|---|
wc | Muestra líneas, palabras y bytes juntos |
wc -l | Muestra solo el número de líneas |
wc -w | Muestra solo el número de palabras |
wc -c | Muestra solo el número de bytes |
printf 'one two three\nfour\n' > draft.txt # crea un archivo de 2 líneas y 4 palabras
wc draft.txt # líneas, palabras y bytes juntos
wc -l draft.txt # 2 (solo líneas)
ls | wc -l # desde una tubería: cuenta los archivos
Traducir caracteres — tr
tr reemplaza los caracteres de la entrada estándar carácter por carácter. tr 'a-z' 'A-Z' convierte minúsculas en mayúsculas. tr -s comprime las repeticiones de un mismo carácter en uno solo (por ejemplo, espacios repetidos) y tr -d elimina los caracteres que indiques. tr no acepta un nombre de archivo como argumento: lee desde una tubería o una redirección de entrada.
| Forma | Significado |
|---|---|
tr 'a-z' 'A-Z' | Convierte minúsculas en mayúsculas |
tr -s ' ' | Comprime los caracteres repetidos en uno solo |
tr -d 'x' | Elimina los caracteres indicados |
-s) y eliminación (-d).echo 'hello linux' | tr 'a-z' 'A-Z' # HELLO LINUX
echo 'a b c' | tr -s ' ' # comprime los espacios repetidos -> a b c
echo 'a-b-c' | tr -d '-' # elimina - -> abc
Dividir la salida entre pantalla y archivo — tee
tee toma lo que recibe de la tubería, lo muestra en pantalla y lo escribe en un archivo al mismo tiempo. Úsalo cuando quieras un registro de los resultados intermedios sin dejar de pasar los datos al siguiente comando. Encadenado como comando | tee out.txt | siguiente comando, registra en out.txt mientras la tubería sigue su curso. Para añadir al final de un archivo existente en vez de sobrescribirlo, usa tee -a.
| Forma | Significado |
|---|---|
tee out.txt | Escribe en pantalla y en el archivo (sobrescribe) |
tee -a out.txt | Muestra en pantalla y añade al final del archivo |
tee muestra en pantalla lo que recibe, lo escribe en el archivo y puedes comprobarlo después con cat.ls | tee list.txt # muestra el listado y lo guarda en list.txt
cat list.txt # también está en el archivo
echo 'extra' | tee -a list.txt # -a añade en vez de sobrescribir
Verificación de conocimientos
Responde cada pregunta una a una.
Pregunta 2¿Qué muestra cut -d',' -f1 users.csv?
Pregunta 3¿Qué ocurre al ejecutar echo hi | tee out.txt?