Per offrirti un'esperienza di navigazione sempre migliore, questo sito utilizza cookie propri e di terze parti, partner selezionati. I cookie di terze parti potranno anche essere di profilazione.
Le tue preferenze si applicheranno solo a questo sito web. Puoi modificare le tue preferenze in qualsiasi momento ritornando su questo sito o consultando la nostra informativa sulla riservatezza.
E' possibile rivedere la nostra privacy policy cliccando qui e la nostra cookie policy cliccando qui.
Per modificare le impostazioni dei cookies clicca qui
  • seguici su feed rss
  • seguici su twitter
  • seguici su linkedin
  • seguici su facebook
  • cerca

SEI GIA' REGISTRATO? EFFETTUA ADESSO IL LOGIN.



ricordami per 365 giorni

HAI DIMENTICATO LA PASSWORD? CLICCA QUI

NON SEI ANCORA REGISTRATO ? CLICCA QUI E REGISTRATI !

Come aggiungere un testo all'inizio di un file, in Linux

di :: 18 marzo 2020
Come aggiungere un testo all'inizio di un file, in Linux

In un precedente articolo ci siamo occupati di come aggiungere un testo alla fine di un file.

In questo articolo, invece, vediamo come aggiungere del testo all'inizio di un file.

Ci sono vari modi per ottenere questo risultato, cominciamo con il comando sed.

Il comando SED

Supponiamo di avere un file di testo, qui localizzato "/var/www/html/test.txt", e con questo contenuto:

pippo
pluto
paperino

Per aggiungere un testo all'inizio del file, ad esempio "Minnie", utilizziamo il comando sed in questo modo

# sed -i '1i minnie' /var/www/html/test.txt

Spieghiamo velocemente i parametri utilizzati nel comando sed

  • -i: aggiornernal contenuto del file e lo salverà automaticamente
  • 1i: indica a sed di inserire la frase nella prima riga del file

Verifichiamo adesso il contenuto del file (utilizziamo il comando cat)

#cat /var/www/html/test.txt

minnie
pippo
pluto
paperino

In alternativa a quanto visto, questo comando visualizza il risultato senza sovrascrivere il file

# sed '1 s/^/minnie\n/' /var/www/html/test.txt
minnie
pippo
pluto
paperino

In questo caso, il comando sed legge il contenuto del file, inserisce il nuovo testo all'inizio (nota: "\n" serve a mandare a capo dopo il nuovo testo), e visualizza il tutto a terminale.

Per salvare in un file il nuovo contenuto dobbiamo aggiungere il nome del file di destinazione

# sed '1 s/^/minnie\n/' /var/www/html/test.txt > /var/www/html/testfinale.txt

In questo modo non avremo un output a terminale, lo stesso infatti sarà stato salvato all'interno del nuovo file "testfinale.txt" (">" crea un nuovo file se non esiste, in caso contrario lo sovrascrive).

Si può usare anche questa scrittura:

# sed '1s;^;minnie\n;' /var/www/html/test.txt > /var/www/html/testfinale.txt

Vediamo adesso un modo alternativo, più complesso e senza il comando sed, per ottenere lo stesso risultato.

Utilizzo di un file temporaneo

Una via alternativa per aggiungere un testo all'inizio di un file è creare un file temporaneo contenente il nuovo contenuto, ad esempio così:

# echo 'minnie' > /var/www/html/tmpfile.txt

Creato il file, che abbiamo chiamato "tmpfile.txt", utilizziamo il comando "cat" per appendere il testo del file originario "test.txt" nel nuovo file temporaneo, così:

# cat /var/www/html/test.txt >> /var/www/html/tmpfile.txt

A questo punto il file temporaneto "tmpfile.txt" conterrà il contenuto desiderato... non ci basta che rinonimare questo file temporaneo con il nome del file originario "test.txt" 

# mv /var/www/html/tmpfile.txt /var/www/html/test.txt

Ci verrà chiesto se sovrascrivere il file "test.txt", rispondiamo di si. Così facendo il file temporaneo è sparito, in quanto è diventato il file "test.txt".

E visto che siete così bravi, potevate fare tutto questo con una sola riga di comando:

echo "xxxxx" | cat /var/www/html/test.txt  > /var/www/html/tmpfile.txt && mv /var/www/html/test.txt /var/www/html/tmpfile.txt

Torniamo adesso al comando "sed" e chiudiamo l'articolo con alcuni suoi utilizzi.

Aggiungere un testo ad ogni file di una directory

Se avessimo più files in una directory e volessimo aggiungere un testo, all'inizio di ogni riga, di tutti i files in essa presenti, operiamo così:

1 - entriamo nella directory, ad esempio "/var/www/html"

2 - lanciamo un ciclo ("loop") come questo: per ogni ("for") file della directory, esegui ("do") il comando sed.

for i in $( ls * ); do sed -i '1 s/^/aggiungo questa riga\n/' $i; done

Aggiungere un testo all'inizio (o alla fine) di ogni riga

Ecco come aggiungere un testo all'inizio ogni riga ...

# sed -i "s/^/minnie/g" /var/www/html/test.txt

... o alla fine di ogni riga del file

# sed -i "s/$/minnie/g" /var/www/html/test.txt

E con questo, anche per oggi abbiamo concluso.

Potrebbe interessarti

 
 
 
 
pay per script

Hai bisogno di uno script PHP personalizzato, di una particolare configurazione su Linux, di una gestione dei tuoi server Linux, o di una consulenza per il tuo progetto?

x

ATTENZIONE