Necesito Ayuda con Bash , problemas con una variable

Estoy empezando a aprender bash y tengo alguna duda a ver si me podeis ayudar.

Supongamos que tengo esta variable que es insertada por el propio usuario
manualmete a traves del comando read.

jose.luis.martinez.lopez

bien lo que no se hacer es como sustituir parte de esa variable por algo que
yo le indique en el script , por ejemplo sustituir "lopez" por "perez".

Ojo , sustituir esa palabra fija por otra si se hacerlo yo , pero eso es una
variable que no es fija que va insertando el usuario y puede cambiar constantemente.

Resumiendo que me estoy liando hasta yo :) necesito cambiar el contenido desde el ultimo caracter que yo le diga , en este caso el ultimo caracter seria un . "punto" , sustituir el .lopez o lopez por .perez o perez.

Saludos.
Tu quieres esto ?

$VARIABLE="jose.luis.martinez.lopez"
$OTRACOSA="perez"
$NEOVARIABLE=`echo $VARIABLE | cut -d. -f1,2,3`.$OTRACOSA


Si no es eso, explicate please :D

Salu2.Ferdy
Suponiendo que la variables es esta:

nombre="jose.luis.martinez.lopez"

Elige:

1) Con sed:

echo $nombre | sed 's/[^\.]*$/perez/'


2) Con awk:

echo $nombre | awk '{$4="perez" ; print $0}' FS='.' OFS='.'


3) Con cut: ya lo ha hecho Ferdy

4) Usando la expansión de parámetros del propio bash (yo te recomiendo esta, porque no necesitas usar otro programa aparte del propio bash):

echo "${nombre%.*}.perez"
Si , gracias ferdy era eso , pero he tenido que hacer un cambio ya que no se porque probandolo en consola me funcionaba bien , pero al meterlo al script me decia que comando no encontrado "OTRACOSA", al final lo he puesto asi.

$VARIABLE="jose.luis.martinez.lopez"
$NEOVARIABLE=`echo $VARIABLE | cut -d. -f1,2,3`
echo $NEOVARIABLE.Perez

4) Usando la expansión de parámetros del propio bash (yo te recomiendo esta, porque no necesitas usar otro programa aparte del propio bash):

echo "${nombre%.*}.perez"


Esa es la forma que estaba pensando pero no encontraba la forma de cambiar la variable sino era fija , bueno llevo pocos dias aprendiendo bash , todavia estoy muy verde y hay muy poca informacion en castellano.

Gracias auxiliar , las diferentes formas que has puesto de hacerlo me va a venir muy bien para seguir aprendiendo y practicando :)
Esa es la forma que estaba pensando pero no encontraba la forma de cambiar la variable sino era fija , bueno llevo pocos dias aprendiendo bash , todavia estoy muy verden


Lo que yo te he puesto es un ejemplo, se pueden hacer más cosas:

man bash

Viene explicado en la sección Parameter Expansion/Expansión de parámetro. Si tienes instaladas las páginas del manual españolas lo podrás leer en castellano.

y hay muy poca informacion en castellano.


Vaya... he estado buscando un mensaje mío donde daba un par de enlaces interesantes en castellano, pero este también se ha perdido...

Mira aquí:

http://www.starlinux.net/articulos.php

Hay tres artículos de "uso y programación de bash" que no están mal. Aunque esta duda que tenías no viene explicada.

las diferentes formas que has puesto de hacerlo me va a venir muy bien para seguir aprendiendo y practicando


En realidad eso no es saber bash, sino saber sed o saber awk. Si haces script en bash, lo más normal es que te acabes encontrando con estas herramientas la mayor parte de las veces.
auxiliar, creo que es el segundo dichoso mensaje interesante que se pierde... lo mismo el tema de enlaces recomendados lo metamos en un wiki, ¿qué te parece?

Salu2.Ferdy
Escrito originalmente por Ferdy
auxiliar, creo que es el segundo dichoso mensaje interesante que se pierde... lo mismo el tema de enlaces recomendados lo metamos en un wiki, ¿qué te parece?


Perfecto...
Voy a ver dónde puedo instalar un wiki de esos o alguno específico para montar bookmarks y a ve que se puede hacer.

Salu2.Ferdy
7 respuestas