Pregunta 1¿Qué líneas trata uniq como duplicadas?
Herramientas de formateo de texto — sort / uniq / cut / wc / tr / tee
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?