1. Líneas, campos y una caja de herramientas
Los filtros de este bloque ven el texto de una manera precisa. Un archivo es una sucesión de líneas, como definimos en el tema 12. Y muchas veces cada línea está dividida en campos por un carácter separador: una coma, dos puntos, una tabulación.
2026-10-01,Luis,Rosario,teclado,2,90 vista como seis campos. Los campos se numeran desde 1.Con esa mirada, un archivo de texto es una tabla: las líneas son filas y los campos son columnas. Los seis filtros del tema operan sobre una de las dos dimensiones:
| Filtro | Hace | Trabaja sobre |
|---|---|---|
sort | Ordena las líneas. | Filas |
uniq | Funde las líneas repetidas contiguas, y las cuenta. | Filas |
cut | Deja pasar solo ciertos campos, o ciertas posiciones. | Columnas |
tr | Reemplaza o borra caracteres. | Caracteres |
paste | Une líneas de varios archivos, lado a lado. | Columnas |
nl | Numera las líneas. | Filas |
Todos cumplen el contrato del tema 22: leen de un archivo dado como argumento o, si no lo hay, de su entrada; escriben en su salida; y no modifican el archivo original. El resultado va a la pantalla, a una tubería o adonde se lo redirija.
2. Los datos de trabajo
Creamos el archivo con un documento en línea, como aprendimos en el tema 23. Es un registro de diez ventas, sin fila de títulos, con los campos separados por comas: el formato que se conoce como CSV, de comma-separated values.
$ cd ~/practica
$ cat > ventas.csv << FIN
> 2026-10-01,Luis,Rosario,teclado,2,90
> 2026-10-01,Marta,Mendoza,monitor,1,320
> 2026-10-02,Ana,Salta,mouse,5,75
> 2026-10-02,Luis,Rosario,cable,10,40
> 2026-10-03,Marta,Rosario,teclado,1,45
> 2026-10-03,Ana,Mendoza,monitor,2,640
> 2026-10-05,Luis,Salta,mouse,3,45
> 2026-10-05,Ana,Rosario,cable,4,16
> 2026-10-06,Marta,Mendoza,mouse,2,30
> 2026-10-06,Luis,Rosario,monitor,1,320
> FIN
$ wc ventas.csv
10 10 360 ventas.csv
| Campo | Contenido | Valores |
|---|---|---|
| 1 | Fecha | En formato año-mes-día. |
| 2 | Vendedor | Ana, Luis, Marta. |
| 3 | Ciudad | Mendoza, Rosario, Salta. |
| 4 | Producto | cable, monitor, mouse, teclado. |
| 5 | Cantidad | Unidades vendidas. |
| 6 | Importe | El total de la venta. |
Si wc no responde diez líneas y 360 bytes, hay una diferencia de tipeo; conviene corregirla con nano, porque los resultados del resto del bloque dependen de estos datos. El archivo queda en el directorio de práctica.
3. sort: ordenar líneas
sort escribe las líneas de su entrada en orden. Lo usamos varias veces; ahora miramos con cuidado cómo ordena, porque de eso dependen sus sorpresas:
$ sort tareas.txt
Comprar pan
Estudiar vim
Llamar a Luis
Pagar la luz
Regar las plantas
$ sort -r tareas.txt | head -n 2 # -r: en orden inverso
Regar las plantas
Pagar la luz
Por defecto, sort compara las líneas completas, carácter por carácter, de izquierda a derecha, según el orden alfabético del idioma configurado en el sistema. Esa última parte tiene consecuencias:
| Con el sistema en español… | Ejemplo |
|---|---|
| Mayúsculas y minúsculas se mezclan. | ana, Bruno, carla. |
| Las letras acentuadas y la ñ van en su lugar. | ñandú entre nube y oso. |
| Los signos de puntuación casi no cuentan. | .bashrc cerca de la «b», como vimos con ls. |
Es el mismo criterio que usa ls, y el adecuado para textos. Cuando se necesita un orden estricto por el código de cada carácter —mayúsculas antes que minúsculas, y siempre igual en cualquier máquina— se antepone una variable al comando: LC_ALL=C sort archivo. Es lo recomendable en los scripts, donde el resultado no debe depender de cómo esté configurado cada equipo.
4. Ordenar números
Comparar carácter por carácter funciona con palabras y falla con números. Lo vemos con la columna de importes, extraída con cut, que estudiamos en la sección 8:
$ cut -d, -f6 ventas.csv | sort | paste -s -d' '
16 30 320 320 40 45 45 640 75 90
$ cut -d, -f6 ventas.csv | sort -n | paste -s -d' '
16 30 40 45 45 75 90 320 320 640
El paste final solo junta los resultados en un renglón, para verlos mejor. En la primera salida, 320 quedó antes que 40: comparados como texto, el carácter «3» es anterior al «4», y ahí termina la comparación. Es el orden de un diccionario, donde «casa» va antes que «cesto» sin importar el largo. La opción -n hace que las líneas se interpreten como números.
| Opción | Compara como | Para |
|---|---|---|
| Ninguna | Texto | Palabras, nombres. |
-n | Números | Cantidades, importes, tamaños en bytes. |
-h | Números con sufijo: 2K, 1,5M, 3G | La salida de du -h y ls -lh. |
-V | Números de versión | 1.9 antes que 1.10; foto2 antes que foto10. |
-M | Nombres de mes | ene, feb, mar… |
Las fechas de nuestro archivo no necesitan ninguna opción. Escritas como año, mes y día, con ceros a la izquierda, su orden alfabético coincide con el cronológico. Es la razón por la que ese formato se prefiere en nombres de archivos y en registros, como anticipamos en el tema 15.
5. Ordenar por una columna
Lo habitual en un archivo de datos es ordenar por un campo determinado. Hacen falta dos opciones: -t para decir cuál es el separador, y -k, de key, para decir qué campo es la clave.
sort -t, -k6,6n ventas.csv
│ │ │ │
│ │ │ └─ comparar ese campo como número
│ │ └─ …y termina en el campo 6
│ └─ la clave empieza en el campo 6…
└─ el separador de campos es la coma
$ sort -t, -k6,6n ventas.csv
2026-10-05,Ana,Rosario,cable,4,16
2026-10-06,Marta,Mendoza,mouse,2,30
2026-10-02,Luis,Rosario,cable,10,40
2026-10-03,Marta,Rosario,teclado,1,45
2026-10-05,Luis,Salta,mouse,3,45
2026-10-02,Ana,Salta,mouse,5,75
2026-10-01,Luis,Rosario,teclado,2,90
2026-10-01,Marta,Mendoza,monitor,1,320
2026-10-06,Luis,Rosario,monitor,1,320
2026-10-03,Ana,Mendoza,monitor,2,640
Las líneas se movieron enteras: sort usa el campo para decidir el orden, y conserva la fila completa.
La forma -k6,6, con el número repetido, es deliberada. La clave se indica como «desde el campo tal hasta el campo cual», y -k6 a secas significa «desde el campo 6 hasta el final de la línea». En la última columna da lo mismo; en cualquier otra, la clave arrastraría los campos siguientes, y el resultado no sería el esperado. Escribir siempre inicio y fin evita el problema.
Si no se indica -t, sort considera que los campos están separados por espacios o tabulaciones. En un archivo CSV, eso hace que toda la línea sea un único campo, y -k no tiene efecto. Es el olvido más frecuente.
6. sort: varias claves y otras opciones
La opción -k se puede repetir. La primera clave manda; la segunda desempata entre las líneas que la primera considera iguales. Cada clave puede llevar sus propias letras: n para numérica, r para inversa.
$ sort -t, -k3,3 -k6,6nr ventas.csv
2026-10-03,Ana,Mendoza,monitor,2,640
2026-10-01,Marta,Mendoza,monitor,1,320
2026-10-06,Marta,Mendoza,mouse,2,30
2026-10-06,Luis,Rosario,monitor,1,320
2026-10-01,Luis,Rosario,teclado,2,90
2026-10-03,Marta,Rosario,teclado,1,45
2026-10-02,Luis,Rosario,cable,10,40
2026-10-05,Ana,Rosario,cable,4,16
2026-10-02,Ana,Salta,mouse,5,75
2026-10-05,Luis,Salta,mouse,3,45
Es el equivalente de «ordenar por ciudad, luego por importe descendente» de una planilla. Las demás opciones útiles:
| Opción | Efecto |
|---|---|
-r | Invierte el orden. |
-u | Elimina las líneas repetidas: deja una de cada una. |
-f | No distingue mayúsculas de minúsculas. |
-b | Ignora los espacios iniciales de cada campo. |
-o archivo | Escribe el resultado en ese archivo, que puede ser el mismo de entrada. |
-c | No ordena: comprueba si ya está ordenado, y lo dice con el código de salida. |
-o es la respuesta a la trampa del tema 23. sort archivo > archivo vaciaba el archivo; sort -o archivo archivo lo ordena en su lugar, porque sort lee todo antes de abrir la salida.
7. uniq: los repetidos
uniq elimina líneas repetidas. Tiene una particularidad que hay que aprender junto con su nombre:
uniq compara cada línea solo con la anterior. Funde las repetidas cuando están contiguas; dos líneas iguales separadas por otra distinta no las detecta.
La consecuencia se ve con la columna de vendedores, donde los nombres se repiten pero nunca en líneas seguidas:
$ cut -d, -f2 ventas.csv | uniq | paste -s -d' ' # sin ordenar: no quita nada
Luis Marta Ana Luis Marta Ana Luis Ana Marta Luis
$ cut -d, -f2 ventas.csv | sort | uniq | paste -s -d' ' # ordenando antes
Ana Luis Marta
Por eso uniq va casi siempre precedido de sort, que junta las iguales. No es un defecto: comparar solo con la anterior le permite trabajar sobre archivos enormes sin guardar nada en memoria. Y es coherente con la idea de que cada herramienta hace una sola cosa; ordenar es trabajo de otra.
| Opción | Muestra |
|---|---|
| Ninguna | Una línea por cada grupo de repetidas. |
-c | Lo mismo, con la cantidad delante. |
-d | Solo las que están repetidas: aparecen más de una vez. |
-u | Solo las que no se repiten: aparecen una sola vez. |
-i | Sin distinguir mayúsculas de minúsculas. |
$ cut -d, -f2 ventas.csv | sort | uniq -c
3 Ana
4 Luis
3 Marta
$ cut -d, -f2 ventas.csv | sort | uniq -c | sort -rn
4 Luis
3 Marta
3 Ana
Es el modismo del tema 24, ahora con cada pieza entendida. El primer sort agrupa, uniq -c cuenta, y el segundo sort, numérico e inverso, pone arriba al más frecuente.
Las opciones -d y -u responden preguntas de otra clase. Tomando dos campos a la vez, el vendedor y la ciudad:
$ cut -d, -f2,3 ventas.csv | sort | uniq -d # ¿quién vendió más de una vez en la misma ciudad?
Luis,Rosario
Marta,Mendoza
Para simplemente quitar duplicados, sort -u hace en un paso lo mismo que sort | uniq. La pareja sigue siendo necesaria cuando se quiere contar.
8. cut: recortar columnas
cut deja pasar una parte de cada línea y descarta el resto. La parte se puede indicar por campos o por posiciones de caracteres:
cut -d, -f2,4 ventas.csv
│ │
│ └─ qué campos dejar: el 2 y el 4
└─ el delimitador es la coma
$ cut -d, -f2,4 ventas.csv | head -n 3
Luis,teclado
Marta,monitor
Ana,mouse
$ cut -c1-10 ventas.csv | head -n 3 # los caracteres del 1 al 10
2026-10-01
2026-10-01
2026-10-02
| Selección | Significa |
|---|---|
-f3 | El campo 3. |
-f2,4 | Los campos 2 y 4. |
-f2-4 | Del 2 al 4. |
-f3- | Del 3 hasta el último. |
-f-2 | Del primero al 2. |
-c1-10 | Los caracteres del 1 al 10. Las mismas formas valen para -c. |
--complement | Lo contrario: todo menos lo indicado. |
Con cut se pueden encadenar cortes sucesivos, cambiando de delimitador. Para obtener solo el día de cada fecha, primero se corta por la coma y después por el guion:
$ cut -d, -f1 ventas.csv | cut -d- -f3 | uniq -c
2 01
2 02
2 03
2 05
2 06
Aquí uniq funcionó sin sort, porque el archivo ya está ordenado por fecha y los días iguales son contiguos.
cut es simple, y tiene tres límites que conviene conocer para no pelear con él:
| Límite | Consecuencia |
|---|---|
| El delimitador es un solo carácter, y cada aparición cuenta. | Con columnas alineadas con varios espacios, como las de ls -l, cada espacio de más crea un campo vacío. |
| No cambia el orden de los campos. | -f4,2 da lo mismo que -f2,4. |
| No entiende comillas. | En un CSV donde un campo contiene una coma entre comillas, corta mal. |
Sin -d, el delimitador es la tabulación. Y las líneas que no contienen el delimitador pasan enteras, salvo que se agregue la opción -s.
9. tr: cambiar y borrar caracteres
tr, de translate, trabaja al nivel más bajo: el carácter. Recibe dos conjuntos y reemplaza cada carácter del primero por el que ocupa la misma posición en el segundo. Lo presentamos en el tema 23 como ejemplo de comando que solo lee de su entrada: no acepta nombres de archivo.
$ cut -d, -f2 ventas.csv | head -n 3 | tr 'a-z' 'A-Z' # minúsculas por mayúsculas
LUIS
MARTA
ANA
$ head -n 2 ventas.csv | tr ',' ';' # un separador por otro
2026-10-01;Luis;Rosario;teclado;2;90
2026-10-01;Marta;Mendoza;monitor;1;320
$ head -n 1 ventas.csv | tr -d '-' # -d: borrar
20261001,Luis,Rosario,teclado,2,90
| Forma | Efecto | Ejemplo |
|---|---|---|
tr 'abc' 'xyz' | Reemplaza a por x, b por y, c por z. | tr ',' '\t': comas por tabulaciones. |
tr -d 'abc' | Borra esos caracteres. | tr -d '\r': quita los finales de línea de Windows. |
tr -s 'a' | Comprime las repeticiones seguidas en una sola. | tr -s ' ': varios espacios, uno. |
tr -c 'abc' 'x' | Actúa sobre el complemento: todo lo que no está en el conjunto. | tr -cd '0-9\n': deja solo dígitos. |
Los conjuntos admiten rangos, las clases del tema 9 —[:upper:], [:digit:], [:space:]— y los escapes \n para el salto de línea y \t para la tabulación. Se escriben entre comillas simples, para que la shell no los toque. Las clases son la forma segura de cambiar de caja un texto en español: tr '[:lower:]' '[:upper:]' tiene en cuenta el idioma, mientras que a-z deja sin tocar la ñ y las vocales con tilde.
La opción -s, de squeeze, resuelve el primer límite de cut. Comprimiendo los espacios repetidos, una salida alineada se convierte en campos que cut puede separar:
$ ls -l | tail -n +2 | tr -s ' ' | cut -d' ' -f5,9
4096 fotos
12813 informe.txt
18 notas.txt
70 tareas.txt
360 ventas.csv
Cuatro filtros: tail quita la línea del total, tr normaliza los espacios, y cut toma los campos quinto y noveno. Funciona mientras los nombres no tengan espacios; es una receta para mirar, no para un script.
10. paste: pegar líneas
paste es el inverso de cut: donde aquel separa columnas, este las junta. Tiene dos usos distintos.
El primero une varios archivos lado a lado: la primera línea de uno con la primera del otro, la segunda con la segunda, y así. Por defecto las separa con una tabulación; -d elige otro carácter.
$ cut -d, -f2 ventas.csv > /tmp/vendedores.txt
$ cut -d, -f6 ventas.csv > /tmp/importes.txt
$ paste -d: /tmp/importes.txt /tmp/vendedores.txt | head -n 3
90:Luis
320:Marta
75:Ana
Es la manera de reordenar columnas, cosa que cut no sabe hacer: se las separa, y se las vuelve a pegar en el orden deseado.
El segundo uso, con -s, de serial, une todas las líneas de una entrada en una sola. Lo empleamos en este tema para mostrar listas en un renglón, y sirve para convertir una columna en una lista separada por comas:
$ cut -d, -f3 ventas.csv | sort -u | paste -s -d,
Mendoza,Rosario,Salta
$ cut -d, -f6 ventas.csv | paste -s -d+
90+320+75+40+45+640+45+16+30+320
$ cut -d, -f6 ventas.csv | paste -s -d+ | bc
1621
La última línea es un truco clásico. Ninguno de estos filtros sabe sumar. Pero uniendo los importes con signos más se obtiene una expresión aritmética, y bc, una calculadora que lee su entrada, la resuelve: el total de las ventas es 1621. En el tema 30 veremos una herramienta que suma columnas directamente.
11. nl y column: presentar
Dos filtros menores no transforman los datos, sino su aspecto. nl, de number lines, antepone a cada línea su número, y es útil para poder referirse a ellas:
$ sort -t, -k6,6nr ventas.csv | head -n 3 | nl
1 2026-10-03,Ana,Mendoza,monitor,2,640
2 2026-10-06,Luis,Rosario,monitor,1,320
3 2026-10-01,Marta,Mendoza,monitor,1,320
Puesto al final de una ordenación, convierte la lista en una clasificación: las tres ventas de mayor importe, con su puesto. A diferencia de cat -n, nl no numera las líneas vacías, y tiene opciones para el ancho y el separador del número.
column alinea los campos en columnas parejas, para que una persona pueda leer una tabla:
$ column -t -s, ventas.csv | head -n 4
2026-10-01 Luis Rosario teclado 2 90
2026-10-01 Marta Mendoza monitor 1 320
2026-10-02 Ana Salta mouse 5 75
2026-10-02 Luis Rosario cable 10 40
La opción -t pide formato de tabla y -s indica el separador de la entrada. Es un filtro de salida: se lo pone al final de una tubería, cuando el resultado es para mirar. Los datos alineados son más difíciles de procesar que los separados por comas, de modo que no conviene alinearlos antes de tiempo.
12. Preguntas a un archivo
Con las seis piezas, más head, tail y wc del tema 12, se puede interrogar al archivo de ventas. Lo importante no es recordar estas líneas sino el modo de armarlas: elegir las columnas que intervienen, y aplicar la operación.
| Pregunta | Tubería | Respuesta |
|---|---|---|
| ¿Cuántas ventas hay? | wc -l < ventas.csv | 10 |
| ¿En qué ciudades se vendió? | cut -d, -f3 ventas.csv | sort -u | Mendoza, Rosario, Salta |
| ¿Cuántas ciudades son? | cut -d, -f3 ventas.csv | sort -u | wc -l | 3 |
| ¿Cuál fue la venta más grande? | sort -t, -k6,6nr ventas.csv | head -n 1 | La de Ana en Mendoza, 640 |
| ¿Y la más chica? | sort -t, -k6,6n ventas.csv | head -n 1 | La de Ana en Rosario, 16 |
| ¿Cuál fue la última venta? | tail -n 1 ventas.csv | La de Luis, el día 6 |
| ¿Cuánto se vendió en total? | cut -d, -f6 ventas.csv | paste -s -d+ | bc | 1621 |
$ cut -d, -f4 ventas.csv | sort | uniq -c | sort -rn
3 mouse
3 monitor
2 teclado
2 cable
$ cut -d, -f3 ventas.csv | sort | uniq -c | sort -rn | head -n 1
5 Rosario
Las dos tuberías son la misma, con otro número de campo. Es lo que da valor al modismo: una vez armado, sirve para cualquier columna de cualquier archivo.
Conviene notar lo que estas respuestas cuentan. uniq -c cuenta líneas: «tres ventas de mouse». No suma las cantidades de la quinta columna, que darían diez unidades. Para eso hace falta operar con el contenido de los campos, y es el límite de estos filtros.
13. Hasta dónde llegan
Los filtros básicos ordenan, cuentan y recortan. Hay tres clases de tarea que no pueden hacer, y cada una es el tema de una herramienta del bloque:
| Necesito… | Ejemplo | Herramienta | Tema |
|---|---|---|---|
| Seleccionar filas por su contenido. | Solo las ventas de Rosario. | grep | 27, 28 |
| Modificar el texto de las líneas. | Cambiar «Rosario» por «ROS» en todo el archivo. | sed | 29 |
| Calcular con los campos. | El importe total por vendedor. | awk | 30 |
| Comparar dos archivos. | Qué ventas hay en un archivo y no en otro. | diff, comm | 31 |
No por eso quedan obsoletos. En una tubería real conviven todos: grep elige las filas, cut las columnas, sort y uniq resumen. Y para lo que saben hacer, estos son los más rápidos y los más fáciles de leer.
La referencia del tema:
| Comando | Qué hace |
|---|---|
sort archivo | Ordena las líneas alfabéticamente. |
sort -n, -r, -u | Numérico; inverso; sin repetidos. |
sort -t, -k3,3 | Ordena por el tercer campo, separado por comas. |
sort -t, -k3,3 -k6,6nr | Por el tercero, y luego por el sexto, numérico y descendente. |
uniq | Funde las líneas iguales contiguas. |
uniq -c, -d, -u | Cuenta; solo las repetidas; solo las únicas. |
cut -d, -f2,4 | Deja los campos 2 y 4. |
cut -c1-10 | Deja los caracteres del 1 al 10. |
tr 'a-z' 'A-Z' | Reemplaza caracteres. |
tr -d, tr -s | Borra; comprime repeticiones. |
paste a b | Une dos archivos línea a línea. |
paste -s -d, | Une todas las líneas en una, separadas por comas. |
nl | Numera las líneas. |
column -t -s, | Alinea los campos en una tabla. |
El directorio de práctica tiene desde ahora un archivo más, ventas.csv, que usaremos en los temas siguientes. Empezamos por lo primero que falta: seleccionar líneas. En el tema 27, grep.
14. Resumen
- Un archivo de texto se procesa como una tabla: las líneas son filas, y los campos, separados por un delimitador, son columnas.
- Los filtros leen de un archivo o de su entrada, escriben en su salida y no modifican el original.
sortordena líneas completas como texto. Con-ncompara números; con-rinvierte; con-uquita repetidos.- Como texto,
320va antes que40. Para números hace falta-n. - Para ordenar por un campo se indican el separador con
-ty la clave con-k, en la forma-k3,3. Varias claves desempatan entre sí. uniqsolo detecta repetidas contiguas: se usa después desort. Con-ccuenta; con-dy-umuestra las repetidas o las únicas.cutdeja pasar campos, con-dy-f, o posiciones de caracteres, con-c. Su delimitador es un solo carácter.trreemplaza, borra con-do comprime con-scaracteres. Solo lee de su entrada.pasteune archivos lado a lado; con-sjunta todas las líneas en una.nlnumera líneas ycolumn -talinea campos: sirven para presentar el resultado.cut … | sort | uniq -c | sort -rncuenta las apariciones de cada valor de una columna.- Estos filtros no seleccionan filas por contenido, no modifican texto ni calculan: de eso se ocupan
grep,sedyawk.
15. Preguntas de repaso
Intenta responder cada una antes de abrir la respuesta.
1. ¿Modifica sort archivo el archivo?
No. Escribe el resultado en su salida. Para guardarlo se redirige a otro archivo, o se usa sort -o.
2. ¿Por qué sort coloca 100 antes que 20?
Porque por defecto compara como texto, carácter por carácter, y «1» es anterior a «2». Con -n los compara como números.
3. ¿Qué opción ordena correctamente la salida de du -h?
-h, que entiende los sufijos K, M y G.
4. ¿Qué hace cada parte de sort -t: -k3,3n /etc/passwd?
-t: fija los dos puntos como separador; -k3,3 usa el tercer campo como clave; la n lo compara como número. Ordena los usuarios por UID.
5. ¿Qué diferencia hay entre -k2 y -k2,2?
-k2 toma como clave desde el campo 2 hasta el final de la línea. -k2,2, solamente el campo 2.
6. Escribe el comando para ordenar ventas.csv por vendedor y, dentro de cada vendedor, por importe descendente.
sort -t, -k2,2 -k6,6nr ventas.csv
7. ¿Por qué uniq se usa casi siempre después de sort?
Porque solo compara cada línea con la anterior. Las repetidas que no están juntas no las detecta, y sort las junta.
8. ¿Qué diferencia hay entre uniq, uniq -c, uniq -d y uniq -u?
Sin opciones deja una línea de cada grupo; -c agrega la cantidad; -d muestra solo las que aparecen más de una vez; -u, solo las que aparecen una vez.
9. ¿Qué muestra cut -d: -f1,7 /etc/passwd?
El nombre de cada usuario y su shell, separados por dos puntos.
10. ¿Por qué cut -d' ' -f5 no sirve directamente sobre la salida de ls -l?
Porque las columnas están alineadas con varios espacios, y para cut cada espacio delimita un campo. Hay que comprimirlos antes con tr -s ' '.
11. ¿Qué hacen tr -d y tr -s?
-d borra los caracteres indicados. -s reduce a uno solo las repeticiones seguidas de un carácter.
12. ¿Por qué falla tr 'a-z' 'A-Z' archivo.txt?
Porque tr no acepta nombres de archivo: solo lee de su entrada. Se escribe tr 'a-z' 'A-Z' < archivo.txt.
13. ¿Qué hace paste -s -d,?
Une todas las líneas de su entrada en una sola, separadas por comas.
14. ¿Cómo se obtiene, de ventas.csv, cuántas ventas hubo en cada ciudad?
cut -d, -f3 ventas.csv | sort | uniq -c
15. uniq -c dice «3 mouse». ¿Significa que se vendieron tres unidades?
No. Significa que hay tres líneas, tres ventas, de ese producto. Sumar las unidades requiere operar con el quinto campo, cosa que estos filtros no hacen.
Para practicar
- Ordena
ventas.csvpor producto y, dentro de cada producto, por cantidad de mayor a menor. Muestra el resultado concolumn -t -s,. - Averigua cuántos productos distintos se vendieron, y lístalos en un solo renglón separados por una barra.
- ¿Cuántas ventas hizo cada vendedor en Rosario? Usa
grep Rosariocomo primer eslabón. - Muestra las tres ventas con más unidades, numeradas con
nl. - Obtén el total de unidades vendidas con
cut,pasteybc. - Lista los usuarios de
/etc/passwdordenados por UID, mostrando solo el nombre y el UID. ¿Cuál es el mayor? - Con
tr, convierteventas.csva mayúsculas, y luego a un archivo separado por tabulaciones en/tmp. Revísalo concat -A. - Con
cutypaste, arma en/tmpuna versión deventas.csvcon las columnas en este orden: producto, cantidad, vendedor. - Ejecuta
ls -l /etc | tail -n +2 | tr -s ' ' | cut -d' ' -f3 | sort | uniq -cy explica qué responde. - Con
sort -c, comprueba siventas.csvestá ordenado por líneas completas y si lo está por fecha (-t, -k1,1). Mira el código de salida en cada caso.