¿Cómo dividir la cadena después y antes del espacio en el script de shell?


Respuestas:


31

Además de la sugerencia de jasonwryan , puedes usar cut:

echo $var | cut -d' ' -f1

Lo anterior cutes la echosalida con un delimitador de espacio ( -d ' ') y genera el primer campo ( -f1)


no está trabajando. Ya lo usé. dice comando no encontrado.
Surbhi

3
@surbhi ¿Qué dice el comando no encontrado? cutEs una utilidad estándar. Su script probablemente tenga un error en otro lugar. En términos más generales, nunca digas "no está funcionando". Siempre diga exactamente qué código ejecutó, exactamente qué sucedió y copie y pegue los mensajes de error.
Gilles 'SO- deja de ser malvado'

Esta respuesta debe ser aceptada, ya que es la forma más concisa y directa. No funcionará en casos que son más complicados que el ejemplo dado, por supuesto.
Dan Nguyen

9

Una buena manera de hacer esto es usar una matriz bash para dividir una cadena en espacios. Puede declarar una matriz simplemente usando paréntesis:

var="129 148     181"
vars=( $var )
echo "First  word of var: '${vars[0]}'"
echo "Second word of var: '${vars[1]}'"
echo "Third  word of var: '${vars[2]}'"
echo "Number of words in var: '${#vars[@]}'"

esto dice comando no encontrado
surbhi

Depende de ti usando bash. Si está utilizando un shell diferente, puede que no funcione. echo $SHELLdebería mostrar: /bin/basho similar.
Gogoud

no funciona zsh; (
TonyH

Esto funciona en ZSH zoom="one two three"; declare -a zoomie=( $( echo $zoom | cut -d' ' -f1- ) ); echo ${zoomie[2]};
TonyH
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.