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.

    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.
    Facing foreclosure or other financial difficulties? Sell your house fast to https://www.housebuyernetwork.com/north-dakota/ and get the cash you need to move on.

    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:Cómo desinstalar Node.js de Mac OSX
    $ 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).

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

    $ echo "abcdefghi" | cut -c2-6
    bcdef
    

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

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

    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.

    $ echo "STRING" | cut -d'C' -f I
    

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

    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:Argumentos de la línea de comandos en Node.js
    $ 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).

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

    STR="birthday-091216-pics"
    SUBSTR=$(echo $STR | cut -d'-' -f 2)
    echo $SUBSTR
    

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

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

    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).

    Te puede interesar:Leer y escribir archivos CSV con Node.js

    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í.

     

    Te puede interesar:Git: Checkout a Remote Branch
    Rate this post

    Etiquetas: