Pregunta:
Tengo una cuerda:
one_two_three_four_five
Necesito guardar en una variable A
valor two
y en variable B
valor four
de la cadena anterior
Estoy usando ksh.
Respuesta:
Use cut
con _
como delimitador de campo y obtenga los campos deseados:
A="$(cut -d'_' -f2 <<<'one_two_three_four_five')"
B="$(cut -d'_' -f4 <<<'one_two_three_four_five')"
También puede usar echo
y pipe en lugar de Here string:
A="$(echo 'one_two_three_four_five' | cut -d'_' -f2)"
B="$(echo 'one_two_three_four_five' | cut -d'_' -f4)"
Ejemplo:
$ s='one_two_three_four_five'
$ A="$(cut -d'_' -f2 <<<"$s")"
$ echo "$A"
two
$ B="$(cut -d'_' -f4 <<<"$s")"
$ echo "$B"
four
Tenga en cuenta que si $s
contiene caracteres de nueva línea, devolverá una cadena de varias líneas que contiene el 2º / 4º campo en cada línea de $s
, no el 2º / 4º campo en $s
.