Subcadenas en Bash

    A lo largo de su carrera de programación, encontrará que hay bastantes veces en las que necesita extraer una subcadena de otra cadena. Las cadenas son una de las estructuras de datos más comunes, por lo que esto aparece con frecuencia. Apuesto a que podrías decirme cómo hacerlo en tu lenguaje de programación favorito, pero ¿y si tuvieras que hacerlo en Intento? No es tan obvio en Bash como en otros idiomas, por lo que explicaremos cómo hacerlo de diferentes formas en este artículo.

    Te puede interesar:Cómo desinstalar Node.js de Mac OSX

    Si tiene experiencia con sistemas operativos basados ​​en Unix, probablemente ya conozca el shell Bash. Pero si no lo hace, aquí hay una explicación rápida. Esencialmente, es un shell de comandos que se escribió inicialmente para el proyecto GNU como reemplazo del shell Bourne. Muchos desarrolladores usan el shell Bash como interfaz para escribir código o interactuar con el sistema de archivos de su sistema operativo, así como para ejecutar otros comandos. Por lo tanto, siempre es útil saber cómo realizar una determinada tarea en caso de que lo use con frecuencia o necesite escribir un script de shell.

    Te puede interesar:Probando el código de Node.js con Mocha y Chai

    Usando el comando de corte

    Obtener una subcadena de la cadena original usando el terminal no es demasiado difícil gracias a un comando incorporado diseñado específicamente para este propósito. Funciona bien para usarlo directamente en la línea de comandos o para usarlo dentro de un script de shell (un archivo .sh). El comando al que me refiero es cut, que es un comando de Bash que toma una cadena y algunas banderas (-cN-M) como entradas y luego genera la subcadena resultante. Aquí hay un ejemplo del formato del comando:

    Te puede interesar:Argumentos de la línea de comandos en Node.js
    $ echo "STRING" | cut -cN-M
    

    Cuando conecte las variables (tanto la cadena como las banderas), Bash le devolverá los caracteres de la cadena a partir del índice N y termina en M (con los caracteres en los índices N y M ambos incluidos).

    Te puede interesar:Enlaces simbólicos en Unix / Linux

    Probemos algunos ejemplos. En el siguiente, usamos la cadena «abcdefghi» y extraemos una subcadena a continuación:

    Te puede interesar:Leer y escribir archivos CSV con Node.js
    $ echo "abcdefghi" | cut -c2-6
    bcdef
    

    Cuando ejecuta el comando anterior en una terminal, obtendrá «bcdef» como resultado.

    Te puede interesar:Git: Checkout a Remote Branch

    Especificar el índice de caracteres no es la única forma de extraer una subcadena. También puede utilizar el -d y -f banderas para extraer una cadena especificando caracteres para dividir. los -d bandera le permite especificar el delimitador para dividir mientras -f le permite elegir qué subcadena de la división elegir. Tenga en cuenta que el cut El comando no está indexado en 0, por lo que el primer elemento de la lista comienza en 1.

    Te puede interesar:Zsh contra Bash
    $ echo "STRING" | cut -d'C' -f I
    

    En el ejemplo anterior, C es el personaje para dividir y I es el índice a elegir.

    Te puede interesar:Monitoreo de cambios de datos usando un HIDS

    Dado esto, probemos con otro ejemplo. Suponga que tiene que extraer una serie de dígitos del nombre de un directorio. El formato del nombre del directorio podría ser algo así como «cumpleaños-091216-imágenes». En este ejemplo, hay algunos caracteres antes de los dígitos que nos interesan y un par de caracteres después de ellos. También hay guiones en el medio como se indica. Podemos abordar fácilmente este problema con el cut comando usando la sintaxis anterior que acabamos de presentar. Así es cómo:

    Te puede interesar:Siga los redireccionamientos en cURL
    $ echo "birthday-091216-pics" | cut -d'-' -f 2
    091216
    

    Esto divide la cadena en una matriz ([«birthday», «091216», «pics»]), y luego muestra un elemento de esa matriz para devolverlo (el segundo elemento).

    Te puede interesar:Cómo usar el comando crontab en Unix

    Si, en cambio, necesita usar esto en un script de shell, su código puede verse así:

    Te puede interesar:Uso de SCP para copiar y transferir archivos y carpetas de forma segura
    STR="birthday-091216-pics"
    SUBSTR=$(echo $STR | cut -d'-' -f 2)
    echo $SUBSTR
    

    Cuando ejecuta los comandos anteriores, obtiene «091216» como salida, como antes.

    Uso de la sintaxis de subcadena de Bash

    Otra forma de extraer subcadenas en un script de shell es usar una variable Bash con la sintaxis de subcadena. La sintaxis se ve así:

    string=YOUR-STRING
    echo ${string:P}
    echo ${string:P:L}
    

    Aquí P es un número que indica el índice inicial de la subcadena y L es la longitud de la subcadena. Si omite el L parámetro, luego se devuelve el resto de la cadena, comenzando desde la posición P.

    Esto es diferente de antes con el cut comando donde dimos los índices inicial y final. En este caso, tenemos que dar el índice inicial y la longitud en su lugar (o ninguna longitud).

    Esta forma suele ser más preferida para los scripts de shell, ya que es sintácticamente más compacta y más fácil de leer. Sin embargo, no funciona bien cuando se usa directamente desde la línea de comando, en cuyo caso probablemente prefiera cut.

    Conclusión

    Hay varias formas de obtener una subcadena en Bash, algunas de las cuales discutimos aquí. Puede utilizar el cut función o la sintaxis de la subcadena Bash para extraer cadenas de acuerdo con sus necesidades. Para aprender más sobre cut función específicamente (que también se puede utilizar en archivos), consulte su Página de Wikipedia aquí.

     

    Rate this post

    Etiquetas: