nomina matriculas fisiologia definicion cita callejeros bogota aplicativos agendamiento sed

matriculas - sed callejeros



sed: reemplaza parte de una lĂ­nea (7)

¿Cómo se puede reemplazar una parte de una línea con sed?

La línea

DBSERVERNAME xxx

debe ser reemplazado por:

DBSERVERNAME yyy

El valor xxx puede variar y hay dos pestañas entre dbservername y el valor. Este par nombre-valor es uno de muchos de un archivo de configuración.

Intenté con la siguiente referencia:

echo "DBSERVERNAME xxx" | sed -rne ''s//(dbservername/)[[:blank:]]+/([[:alpha:]]+/)//1 yyy/gip''

y eso dio como resultado un error: referencia no válida / 1 en el RHS del comando `s ''.

¿Qué pasa con la expresión? Usando GNU sed.


Estás escapando de tu (y). Estoy bastante seguro de que no necesitas hacer eso. Tratar:

sed -rne ''s/(dbservername)[[:blank:]]+/([[:alpha:]]+/)//1 yyy/gip''


Esto funciona:

sed -rne ''s/(dbservername)/s+/w+//1 yyy/gip''

(Cuando usa la opción -r, no tiene que escapar de los paréntesis).


Esto podría funcionar para usted:

echo "DBSERVERNAME xxx" | sed ''s//S*$/yyy/'' DBSERVERNAME yyy


No debería estar escapando cosas cuando usa comillas simples. es decir.

echo "DBSERVERNAME xxx" | sed -rne ''s/(dbservername[[:blank:]]+)([[:alpha:]]+)//1 yyy/gip''


No deberías escapar de tus parientes. Tratar:

echo "DBSERVERNAME xxx" | sed -rne ''s/(dbservername)[[:blank:]]+([[:alpha:]]+)//1 yyy/gip''


Otros ya han mencionado el escape de paréntesis, pero ¿por qué necesita una referencia posterior, si la primera parte de la línea es constante?

Simplemente podrías hacer

sed -e ''s/dbservername.*$/dbservername yyy/g''


Prueba esto

sed -re ''s/DBSERVERNAME[ /t]*([^/S]+)//yyy/ig'' temp.txt

o esto

awk ''{if($1=="DBSERVERNAME") $2 ="YYY"} {print $0;}'' temp.txt