Pagina 1 di 1

Aggiunta di una riga con sed

Inviato: ven 5 nov 2010, 23:34
da samiel
Devo aggiungere la riga
Map ulg.map
al file /usr/local/texlive/texmf-local/web2c/updmap-local.cfg
Mi va benissimo che la piazzi alla fine.
Posto che prima ho messo
BASEDIR=/usr/local/texlive/texmf-local
la stringa
sed -i 's/Map ugl.map/' $BASEDIR/web2c/updmap-local.cfg
mi dà errore:
sed: espressione -e #1, carattere 14: comando `s' non terminato
Dove ho sbagliato?
Grazie
M.

Re: Aggiunta di una riga con sed

Inviato: sab 6 nov 2010, 2:00
da targzeta
Il comando 's' di sed sta per 'sostituisci', tu non li hai detto di sostituire niente. Se vuoi semplicemente aggiungere la riga alla fine del file puoi anche usare:

Codice: Seleziona tutto

echo 'Map ulg.map' >> $BASEDIR/web2c/updmap-local.cfg
non vedo perchè disturbare sed ;).

Emanuele

Re: Aggiunta di una riga con sed

Inviato: sab 6 nov 2010, 11:13
da albatrosla
Rispondo comunque per completezza, visto che la necessità di inserire una riga in fondo al file - come dice spina - la soddisfi già con l'operatore ">>".
Per aggiungere delle righe con sed devi usa il comando append "a" o il comando insert "i" invece del comando sostituisci "s".
Dunque la sintassi è la seguente:

Codice: Seleziona tutto

sed -i '<NN>a <STRING>'
Dove a <NN> va sostituito il numero di riga, oppure un pattern da individuare nel file. Esempi pratici applicati ad un file del tipo:

Codice: Seleziona tutto

10
20
30
sed -i '1a STRINGA' produce:

Codice: Seleziona tutto

10
STRINGA
20
30
sed -i '1i STRINGA' produce:

Codice: Seleziona tutto

STRINGA
10
20
30
sed -i '/10/a STRINGA' produce:

Codice: Seleziona tutto

10
STRINGA
20
30
E via dicendo...
In questo specifico caso, <NN> posto pari a $ indica l'ultima riga del file.

Re: Aggiunta di una riga con sed

Inviato: mar 9 nov 2010, 0:31
da samiel
Sì, poi mi ero accorto della cavolata che avevo fatto.
E inoltre mancava il reindirizzamento al file.
Solo una cosa, tanto per complicare un po' le cose:
se volessi in pratica dire:
aggiungi questa riga, se no c'è già?
Nel senso che, dovendo ad es reinstallare un font,
mi troverei il file di configurazione con tante righe
uguali quante reinstallazioni ho fatto..

Mille grazie
M.

Re: Aggiunta di una riga con sed

Inviato: mar 9 nov 2010, 1:03
da targzeta
Ti posto due modi:

Codice: Seleziona tutto

! grep -q stringa_da_cercare nome_file && echo stringa_da_inserire >> nome_file
mentre con sed:

Codice: Seleziona tutto

sed -i '/stringa_da_cercare/b found;$a\
stringa_da_inserire
p;d;:found n; b found' nome_file
Emanuele

Re: Aggiunta di una riga con sed

Inviato: mer 10 nov 2010, 20:43
da samiel
Ottima la prima, visto che all afine avevo fatto con echo
E buona a sapersi la seconda...

Milla grazie
M.

Re: Aggiunta di una riga con sed

Inviato: mer 7 set 2016, 19:06
da Linpassion
nn so se puo funzionanre una cosa tipo

echo stringa da aggiungere >> nome del file