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:
$ 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 ChaiEspecificar 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:
$ 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 / LinuxUso 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í.
Te puede interesar:Git: Checkout a Remote Branch