Unix: Uso del comando cut

Como su propio nombre indica, el comando cut tiene la característica de poder cortar caracteres y campos, con la posibilidad de usar delimitadores y otras opciones, para finalmente extraer las partes seleccionadas de cada fichero en la salida estándar.

El comando cut nos ofrece los siguientes argumentos:

-b, –bytes=LISTA       muestra solamente estos bytes
-c, –characters=LISTA  selecciona solamente estos caracteres
-d, –delimiter=DELIM   usa DELIM en vez de caracteres de tabulación para delimitar los campos
-f, –fields=LISTA selecciona solamente estos campos; también muestra cualquier línea que no tenga un carácter delimitador, a menos que se especifique la opción -s
-n (no tiene efecto)
–complement complementa el conjunto de bytes, caracteres o campos seleccionados.
-s, –only-delimited    no muestra las líneas que no contienen delimitadores
–output-delimiter=CADENA  utiliza CADENA como el delimitador del resultado. Por omisión se utiliza el
delimitador de la entrada
–help muestra esta ayuda y finaliza
–version informa de la versión y finaliza

Vamos a hacer unos ejemplos sencillos, saquemos un texto por pantalla:

$ echo "Esto es una prueba, 1 2 3, probando"
Esto es una prueba, 1 2 3, probando

Bien, utilizando como delimitador por ejemplo la coma, podemos dividir en 3 partes el texto, podemos mostar cada una de esas tres partes (fields) con la opción -f
:

$ echo "Esto es una prueba, 1 2 3, probando"  | cut -d "," -f 1
Esto es una prueba
$ echo "Esto es una prueba, 1 2 3, probando"  | cut -d "," -f 2
 1 2 3
$ echo "Esto es una prueba, 1 2 3, probando"  | cut -d "," -f 3
 probando

¿Y si quisieramos sacar solamente unos caracteres en concreto? Usaremos el argumento -c:

$ echo "Esto es una prueba, 1 2 3, probando"  | cut  -c 1-4
Esto
$ echo "Esto es una prueba, 1 2 3, probando"  | cut  -c 6-8
es
$ echo "Esto es una prueba, 1 2 3, probando"  | cut  -c 9-12
una
$ echo "Esto es una prueba, 1 2 3, probando"  | cut  -c 14-18
rueba
$ echo "Esto es una prueba, 1 2 3, probando"  | cut  -c 13-18
prueba

Esto es lo más básico del comando cut, a partir de aquí ya sabéis, trastear, investigar, revisar la página man y comenzar a utilizarlo junto con otros comandos, en scripts, etc.

19 comentarios en “Unix: Uso del comando cut

    • Que comandos utilizo si quiero obtener el segundo parrafo de un texto…gracias por la ayudita..

  1. Consulta… como puedo asignar el valor de un CUT a una Variable, es decir :
    cut -c22-34 fichero el retorno de esto lo pueda asignar a una variable en un Script.
    Saludos.

  2. Creo que esto es lo que necesitas:

    —————————————-
    VARIABLE=`cut -c22-34 fichero`
    echo $VARIABLE
    —————————————-

    Saludos

  3. ¿como hago si deseo cortar algo de la segunda línea? ejemplo:

    línea 1: Esto es una prueba, 1 2 3, probando

    línea 2: Otra prueba, 5 6 7, sigo probando

    ¿ como corto algo de la segunda línea?

  4. Hola amigo,
    me puedes ayudar quiero cortar una parte del comando TOP solo el porcentage usado del CPU pero cuando le doy cut, solo corta la parte de abajo,
    porfavor

    top – 19:14:04 up 1:44, 2 users, load average: 0.53, 0.45, 0.50
    Tasks: 158 total, 1 running, 157 sleeping, 0 stopped, 0 zombie
    Cpu(s): 12.2%us, 4.2%sy, 0.1%ni, 82.2%id, 1.4%wa, 0.0%hi, 0.0%si, 0.0%st
    Mem: 2047784k total, 2031056k used, 16728k free, 612080k buffers
    Swap: 261116k total, 0k used, 261116k free, 825628k cached

  5. Para que un delimitador sea un enter tienes que hacer:
    cut -d$’\n’

    va de lujo!

    Yo también tengo una pregunta:
    La variable de entorno IFS se puede usar con el cut??

  6. Buen dia!

    Como puedo hacer para guardar a un txt solo una porcion de linea Ejemplo:

    se tiene la siguiente linea
    0:8:2:1501290731:00:19:18076074:0:12500::16:7::989:00400008,11:?:17432979:0:3:0:0,1: 759000620013:3230:6:000000:0004::00,1: 759000620013:3230:6:000000:0004:0802:00,2::::1:3230:1:00,1: 759100200031:3020:6:000000:0004::00,1: 759100200031:3020:6:000000:0004:0802:00,2::::1:3020:1:00,11: >>:17432979:31:0:0:0:0:0:0:0,5:11:12500:::00

    como hacer para que primero me guarde desde el simbolo ? hasta el >> comtemplando que la longitud, campos o parametros son variables. Quisiera obtener es lo siguientes:
    ?:17432979:0:3:0:0,1: 759000620013:3230:6:000000:0004::00,1: 759000620013:3230:6:000000:0004:0802:00,2::::1:3230:1:00,1: 759100200031:3020:6:000000:0004::00,1: 759100200031:3020:6:000000:0004:0802:00,2::::1:3020:1:00,11: >>:

    y luego poder transformar la informacion a esto:
    17432979:759000620013:3230:6:000000:0004::00,1:
    17432979:759000620013:3230:6:000000:0004:0802:00,2::::1:3230:1:00,1:
    17432979:759100200031:3020:6:000000:0004::00,1:
    17432979:759100200031:3020:6:000000:0004:0802:00,2::::1:3020:1:00,11

    por ultimo dejarlo asi para subirlo a una tabla:
    17432979:759000620013:3230:6:000000:0004:::::::::00,1:
    17432979:759000620013:3230:6:000000:0004:0802:00,2::::1:3230:1:00,1:
    17432979:759100200031:3020:6:000000:0004:::::::::00,1:
    17432979:759100200031:3020:6:000000:0004:0802:00,2::::1:3020:1:00,11

    Si me pueden ayudar se los agradeceria enormemente

Comments are closed.