Repository 32bit  Forum
Repository 64bit  Wiki

Aggiunta di una riga con sed

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Aggiunta di una riga con sed

Messaggioda samiel » ven nov 05, 2010 23:34

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.
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Aggiunta di una riga con sed

Messaggioda targzeta » sab nov 06, 2010 2:00

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
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6176
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: Aggiunta di una riga con sed

Messaggioda albatrosla » sab nov 06, 2010 11:13

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.
albatrosla
Packager
Packager
 
Messaggi: 1294
Iscritto il: sab mar 27, 2004 0:00
Località: Bressa - Friuli / Torino
Slackware: current
Desktop: fluxbox.git

Re: Aggiunta di una riga con sed

Messaggioda samiel » mar nov 09, 2010 0:31

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.
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Aggiunta di una riga con sed

Messaggioda targzeta » mar nov 09, 2010 1:03

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
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6176
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: Aggiunta di una riga con sed

Messaggioda samiel » mer nov 10, 2010 20:43

Ottima la prima, visto che all afine avevo fatto con echo
E buona a sapersi la seconda...

Milla grazie
M.
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite