Mi sono guardato intorno sed
comando per aggiungere testo a un file in una riga specifica.
Funziona aggiungendo testo dopo la riga 1:
sed '1 a
Ma voglio aggiungerlo prima riga 1. Sarebbe:
sed '0 a
ma ottengo questo errore:invalid usage of line address 0
.
Qualche suggerimento?
Risposta accettata:
Usa sed
's inserisce (i
) opzione che inserirà il testo nella riga precedente.
sed '1 i
Aggiornamento dell'autore della domanda:
Per farlo, modifica il file sul posto – con GNU sed
– Ho dovuto aggiungere il -i
opzione:
sed -i '1 ianything' file
Anche la sintassi
sed -i '1i text' filename
Per versioni non GNU
Devi premere il tasto Invio subito dopo la barra rovesciata 1i
e dopo first_line_text
:
sed -i '1i
first_line_text
'
Nota anche che alcuni sed
non GNU implementazioni (ad esempio quella su macOS) richiedono un argomento per -i
flag (usa -i ''
per ottenere lo stesso effetto di GNU sed
).
Per sed
implementazioni che non supportano -i
eseguire senza questa opzione ma reindirizzare l'output a un nuovo file. Quindi sostituisci il vecchio file con il file appena creato.