1 votos

¿La forma más sencilla de "subordinar" una variable de cadena en el terminal?

Supongamos que tenemos una variable $test que tiene un valor asd 123 - ¿cuál es la forma más sencilla de cortar, por ejemplo, asd parte?

He buscado en Google por un tiempo y me sorprendió que no pudiera encontrar una respuesta.

2voto

Serg Puntos 17677

En Bourne-como conchas, tales como dash ( /bin/sh en Ubuntu ), bash y ksh hay algo que se conoce como parámetro de expansión, y es una característica especificada por el estándar POSIX. Específicamente, para citar dash manual de:

 ${parameter%word}     Remove Smallest Suffix Pattern.  The word is expanded to produce a pattern.  The parameter expansion then results in parameter, with the smallest
                       portion of the suffix matched by the pattern deleted.

 ${parameter%%word}    Remove Largest Suffix Pattern.  The word is expanded to produce a pattern.  The parameter expansion then results in parameter, with the largest
                       portion of the suffix matched by the pattern deleted.

 ${parameter#word}     Remove Smallest Prefix Pattern.  The word is expanded to produce a pattern.  The parameter expansion then results in parameter, with the smallest
                       portion of the prefix matched by the pattern deleted.

 ${parameter##word}    Remove Largest Prefix Pattern.  The word is expanded to produce a pattern.  The parameter expansion then results in parameter, with the largest
                       portion of the prefix matched by the pattern deleted.

Por lo tanto, para reemplazar asd de la parte que usted puede hacer:

$ var="asd 123"
$ echo ${var#asd*}
123

Para quitar 123 puede hacer:

$ echo ${var%*123}
asd

bash va aún más lejos con esta con otra forma: ${parameter/string/replacement} y ${parameter//string/replacement}. Primero se reemplaza la primera ocurrencia de la cadena. Segundo formulario reemplaza todas las ocurrencias. Por ejemplo:

$ echo ${var//123/}
asd
$ echo ${var//asd/}
123

Tenga en cuenta que de acuerdo con la sintaxis, la replacement parte es una cadena vacía

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: