GNU/Linux >> Linux Esercitazione >  >> Linux

Modifica del contenuto di un file tramite script di 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

*

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.


Linux
  1. Script Shell per spostare i file più vecchi?

  2. Come creare un file temporaneo nello script della shell?

  3. Come aggiungere i dati al buffer nello script della shell?

  4. Eseguire un file di script su Ssh tramite Sudo?

  5. Eseguire lo stesso script su più server tramite Ssh?

Come eseguire uno script di shell all'avvio

Copia e sovrascrivi un file nello script della shell

Cos'è un file .sh?

Come eseguire un file senza estensione .sh nella shell

Un file .sh può essere un malware?

Creazione di modelli con Linux in uno script Shell?