GNU/Linux >> Tutoriales Linux >  >> Linux

Cambiar el contenido de un archivo a través de un script de shell

*

#! /bin/sh
file=xyz.cfg
addr=$1
port=$2
username=$3
sed -i 's/address=.*/address='$addr'/' $file
sed -i 's/port=.*/port='$port'/' $file
sed -i 's/username=.*/username='$username'/' $file

*

Espero que este sea más fácil de entender para los principiantes


sed -i 's/something/other/g' filename.txt 

Editará filename.txt en el lugar y cambiará la palabra 'algo' a 'otro'

Sin embargo, creo que -i puede ser una extensión de GNU, pero si te parece bien, puedes agregarla a través de find, xargs, etc.

Si desea cambiarlo en un script de shell, puede tomar argumentos en la línea de comandos y referirse a ellos por número, por ejemplo, $1

Editar:

Según mi comentario, la respuesta de sudo_O a continuación es exactamente el ejemplo que desea. Lo que agregaré es que es común que desee hacer tales coincidencias con múltiples archivos, abarcando subdirectorios, etc., así que conozca find/xargs, y puede combinar los dos. Un ejemplo simple de cambiar la subred en un grupo de archivos .cfg podría ser:

find -name '*.cfg' -print0 | xargs -0 -I {} sed -ie 's/\(192.168\)\.1/\1\.7/' {}

Tenga en cuenta los argumentos -print0/-0 para encontrar/xargs (muy útil para rutas/nombres de archivo con espacios), y que debe escapar de los corchetes de captura debido al shell (lo mismo en el ejemplo de Sudo)


¿Qué tal algo como:

#!/bin/bash

addr=$1
port=$2
user=$3

sed -i -e "s/\(address=\).*/\1$1/" \
-e "s/\(port=\).*/\1$2/" \
-e "s/\(username=\).*/\1$3/" xyz.cfg

Donde $1,$2 y $3 son los argumentos pasados ​​al script. Guárdelo en un archivo como script.sh y asegúrese de que sea ejecutable con chmod +x script.sh entonces puedes ejecutarlo como:

$ ./script.sh 127.8.7.7 7822 xyz_ITR4

$ cat xyz.cfg
group address=127.8.7.7
port=7822
Jboss username=xyz_ITR4

Esto le brinda la estructura básica, sin embargo, le gustaría pensar en validar la entrada, etc.


Linux
  1. ¿Script de Shell para mover archivos más antiguos?

  2. ¿Cómo crear un archivo temporal en Shell Script?

  3. script bash agrega texto a la primera línea de un archivo

  4. Cómo ejecutar un archivo sin extensión .sh en shell

  5. ¿Plantillas con Linux en un script de Shell?

Abra Vim desde dentro de un script de shell Bash

Shell:escribe contenido variable en un archivo

Copie y sobrescriba un archivo en el script de Shell

¿Qué es un archivo .sh?

mover solo si el archivo existe en un script de shell

¿Puede un archivo .sh ser malware?