*
#! /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
*
Spero che questo sia più semplice da capire per i principianti
sed -i 's/something/other/g' filename.txt
Modificherà filename.txt sul posto e cambierà la parola 'qualcosa' in 'altro'
Penso che -i potrebbe essere un'estensione GNU, ma se per te va bene, puoi aggiungerla tramite find, xargs ecc.
Se desideri cambiarlo in uno script di shell, puoi prendere gli argomenti sulla riga di comando e fare riferimento ad essi per numero, ad esempio $1
Modifica:
Come da mio commento, la risposta di sudo_O di seguito è esattamente l'esempio che desideri. Quello che aggiungerò è che è normale che tu voglia fare tali corrispondenze con più file, estendendo sottodirectory ecc., Quindi conosci find/xargs e puoi combinare i due. Un semplice esempio di modifica della sottorete in un gruppo di file .cfg potrebbe essere:
find -name '*.cfg' -print0 | xargs -0 -I {} sed -ie 's/\(192.168\)\.1/\1\.7/' {}
Nota gli argomenti -print0/-0 per trovare/xargs (molto utili per percorsi/nomi di file con spazi) e che devi sfuggire alle parentesi di acquisizione a causa della shell (lo stesso nell'esempio di sudo)
Che ne dici di qualcosa come:
#!/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
Dove $1,$2
e $3
sono gli argomenti passati allo script. Salvalo in un file come script.sh
e assicurati che sia eseguibile con chmod +x script.sh
quindi puoi eseguirlo come:
$ ./script.sh 127.8.7.7 7822 xyz_ITR4
$ cat xyz.cfg
group address=127.8.7.7
port=7822
Jboss username=xyz_ITR4
Questo ti dà la struttura di base, tuttavia vorresti pensare alla convalida dell'input ect.