Qual è ' il modo migliore per modificare un file con uno script bash?

Utilizzando / bin / bash su RHEL 5.8 e voglio automatizzare la modifica di un file. Ho bisogno dello script per cercare nel file e sostituire una riga nel file. Esempio di riga:

Other line Current date 01121990 Other line 

Cerca questa riga e sostituisci la stringa della data con una data predeterminata. Non posso “passare a un nuovo file e inserire la mia data poiché questo file verrà copiato da un file specifico del server. Grazie!

Commenti

  • sed sarebbe lo strumento di scelta qui …

Risposta

your_date="your desired date" sed -i "s/^Current date.*/Current date ${your_date}/" /path/to/file 

Questo è il modo più semplice. Ciò presuppone che tutte le righe che contengono una data da sostituire siano anche le uniche righe che iniziano con “Data corrente”.

Notare che il livello utente che esegue questo comando deve anche avere il permesso di modificare quel file.

-i significa modifica in linea, il che significa che stai modificando direttamente il file.

^Current date.* 

Indica tutte le righe che iniziano con: Data corrente e termina con qualsiasi cosa. In altre parole, sostituisci lintera riga con ciò che si trova nella seconda parte /…/ della cosa sed.

Double “sono usati attorno allistruzione sed in modo che le variabili saranno usate come variabili, non stringhe.

Commenti

  • Grazie Lizardx che ' è esattamente ciò di cui ho bisogno, lho testato e funziona alla grande
  • molto felice di sentirlo.

Risposta

ed può eseguire anche la modifica sul posto dei file ! Il numero di inode del file modificato rimane invariato.

file="/path/to/file" your_date="your desired date" ls -i "$file" printf "%s\n" H ",g/^Current date.*/s//${your_date}/" wq | ed -s "$file" ls -i "$file" 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *