3 votos

Reemplazar la cadena con el contenido del archivo multilínea

Necesito reemplazar cadena SALT en un archivo con contenido de otro archivo. Problema es que el archivo de entrada tiene Multilineas. He intentado algo como esto en mi script de bash:

SALT=`cat salt.txt`;
sed "s/SALT/$SALT/" wp-config.php > result.txt

Trabajo de fino cuando salt.txt sola línea, pero si hay más líneas de falla. He leído que podría hacer PERL. Pero no sé cómo. ¿Me podrias ayudar?

1voto

FARSHAD Puntos 31

Otra perl manera:

perl -pe 's/SALT/`cat salt.txt`/e' wp-config.php > result.txt

La clave aquí es la /e regexp opción que nos permite utilizar un perl comando resultado como una cadena de sustitución.

0voto

steve Puntos 6
perl -e 'open my $S, "<", "salt.txt" or die $!;
         $salt = do { local $/ ; <$S> };
         s/SALT/$salt/, print while <>;
        ' wp-config.php > result.txt

salt.txt.
La segunda línea se lee que lo contenido en la variable $salt.
La tercera toma los argumentos de línea de comandos como nombres de archivo, lee el fichero línea por línea y reemplaza la cadena.

0voto

ieplugin Puntos 216

Si usted quiere meter a bash, elegir un personaje que no aparece en ninguno de los de su cadena, ni en su archivo, digamos @; entonces:

SALT=`< salt.txt tr '\n' '@'`
sed "s/SALT/$SALT/" wp-config.php | tr '@' '\n' > result.txt

De esta manera antes de que el reemplazo de la newline caracteres de la cadena son cambiados a @ y después de la sustitución de la @ personajes se vuelven a cambiar a newlines, por lo que SALT no es tratada como una matriz más, pero sólo como una variable que contiene una cadena larga.

0voto

Helio Puntos 2201

Usted puede hacer esto:

sed -e "/SALT/{r salt.txt" -e "d}" wp-config.php  > result.txt

Donde salt.txt es la sal, wp-config.php es el archivo de entrada y SALT es la cadena a sustituir

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: