Herramientas UNIX desconocidas: cut
Uno de los desarrolladores implicados en Debian ha publicado un pequeño post en su blog en el que nos habla de una de esas utilidades que provienen del mundo UNIX y que pueden llegar muy bien a los usuarios.
Se trata del comando cut, una pequeña herramienta que permite extraer ciertas partes de un texto y que ayuda a trabajar con cadenas de caracteres (strings) de forma más potente. Por ejemplo, para extraer del tercer al octavo caracter de una palabra:
$ echo Hurzlipuh | cut -c3-8 rzlipu
Como indica Alex Beckert en su blog, lo realmente útil de este comando está en escenarios en los que es necesario que “recortemos” la salida de programas en terminal que se pasan de las 80 columnas (la anchura tradicional de un terminal convencional). Así, haríamos:
$ dpkg -l | grep -i macro | cut -c-80 ii docbook-to-man 1:2.0.0-28 ii latex-cjk-common 4.8.2+git20090105-5 ii m4 1.4.14-3 ii mp4h 1.3.1-5 rc swfdec-gnome 2.28.0-1
Es posible recortar columnas basándose en caracteres (-c), bytes (-b), campos (-f) delimitados por tabuladores (o con un delimitador específico indicado con -d). Un truco curioso, sin duda.
Related posts:












Muy bueno el recordatorio.
Recordatorio sí, pero desconocido no. :S
Sí, le habría quedado mejor: “Herramientas olvidadas” o algo así
Aunque ya lo cuentas ahí, yo creo que lo que más utilidad tiene es usar el -f, por ejemplo, para saber pids de procesos:
ps aux|grep proceso|cut -d’ ‘ -f7…
Ya se que existe killall (que hay que escribirlo exacto) o pkill que permite expresiones regulares, pero a veces pasan de mí, y esto no :D
kill -9 `ps aux|grep proces|cut -d’ ‘ -f7`
También es util tratándose de paquetes: dpkg -l | cut -d’ ‘ -f3 lista de todos tus paquetes.
Un programa “similar” pero mucho más potente para estas cosas es AWK: dpkg -l | awk ‘{ print $2 }’ o ps aux | grep proceso | awk ‘{ print $2 }’
Álex, eso es lo que yo llamaría un comentario con sustancia :)
Gracias por los apuntes!
Yo hice una vez un script para la gestion básica de usuarios en linux (Con zenity), Y cut, creo que es uno de los comandos que más use, ya que sin el, no se podrian seleccionar el nombre de los usuarios o grupos, al venir en una lista dentro de un archivo, /etc/passwd para usuarios y /etc/group para los grupos.
Como dice Álex González, Awk es mas potente, me gustaria aprender a usarlo, pero aun no he encontrado el momento.
Aqui os dejo el script por si a alguien le interesa
http://pastebin.com/yCQWDS1H
Saludos
Yo nunca he podido aprender awk, como que supera mi capacidad de entender un lenguaje. Pero combinando grep, cut y sed puedo hacer de todo, o por lo menos, todo lo que he necesitado
¡¿Desconocido?! ¡Si me lo enseñaron hasta en la carrera (y eso que poco Linux me enseñaron)! Se utiliza principalmente, como dice Álex González, para separar campos en un listado. Es muy útil a la hora de hacer scripts.
Combinado con “alias” también puede ser muy útil. Por ejemplo, si al hacer “ls -l” quiero que salgan solo algunas de las columnas y no todas.
no entiendo nada………………………………….,
Para quien no se haya leido nada seguro que es desconocidisima.
Para eso mejor usar awk, que es mucho mas potente que el cut.
n00b
noob dice…jajaja! como se nota que no tienes ni puta idea eh…
Recurrir a awk ignorando algunas otras coreutils es de novatos.
Primero hay que hacer el trabajo como hombes, antes de recurrir a Awk, a sed o a Perl =P
No te preocupes, eventualmente lo entenderás ;)
personaje!
AegLos tiene Razón Ramón, Awk es mucho mas potente que cut, Pero para cosas simples, mejor usar cut (en mi opinion).
Tambien existen gAwk y mAwk, Aunque esos si que nunca los Use, ni siquiera sé para que sirven ;), hay tantos comandos en linux…
No se olvide la posibilidad de indicar delimitadores con el comando cut o el uso del comando awk.
Os recomiendo visitar el enlace para profundizar en el conocimiento del comando cut y conocer otros posibles usos.
Salu2