Por ahi anda la historia
tiene que ser algo por el estilo de esto, que bien dices:
sed -i "s/${linea2%:N}/${linea2%:S}/" reservas
pero el sed se queda ahi y no hace nada, me dice missing }
el problema que tiene esa linea es que me dice "missing }" :S esto es una locura xDDD
El problema está en la palabra por la que hay que substituir me imagino... como le especifico que sea solo el último campo de $linea2 ? por lo que me has puesto entiendo que con %:N no sería más logico entonces:
Lo que quiero hacer es basicamente que me coja esa linea ($linea2) y me la cambie por la otra, por ejemplo
de esto:
490:00001:20:N
a esto:
490:00001:20:S
y el fichero sería algo así:
605:21083:1:S
535:21083:2:S
531:21395:1:S
535:21395:2:S
537:21395:3:S
539:00050:1:S
487:00001:1:S
488:00001:2:S
489:00001:3:S
490:00001:20:N
La fila esa no tiene porque estar en la última posición... de hecho para después de editar el archivo haré un sort para que me lo ordene todo según el primer campo y si luego se lanzase otra vez el script pues buscaría la linea a editar y la cambiaría (eso ya lo tengo hecho). Solo me falta lo de editar ese campo :S
saludos y gracias
EDITO:
Por fin!!
lo conseguí
Ahí va la solución:
set linea2_mod = `echo $linea2 | sed 's/:N/:S/'`
sed -i "s/${linea2}/${linea2_mod}/" reservas
Me estaba volviendo loco ya xD Más que nada porque leyendo, leí a un guiri que decía que sed no aceptaba variables de shell y ya me estaba entrando la mala leche xD