shacky ha scritto:
Nello specifico, i file di configurazione in questione sono quelli di
Shorewall, che hanno come ultima riga questa:
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
Questa riga non si può togliere, e qualsiasi riga di configurazione va
inserita prima di essa.
Come posso farlo, con sed?
Riprendendo l'esempio di Davide, devi fare:
cat file_di_conf | sed "s/\(^#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS
ONE -- DO NOT REMOVE$\)/quello_che_vuoi_inserire_prima\n\1/"
Ti spiego un po più in dettaglio, se tu nell'espressione regolare
racchiudi qualcosa tra parentesi tonde, devi quotarle con il backslash
in questo modo \(expr\), puoi riutilizzare quello che viene matchato
(passatemi il termine) nella sostituzione inserendo \x dove x e la
posizione del gruppo di parentesi, mi sembra che si possa arrivare fino
a 9 gruppi. Quindi nell'esempio racchiudendo tra parentesi la sola riga
che ti interessa puoi farvi riferimento con \1, non sono sotto linux
quindi non ho possibilità di provare l'esempio che ho scritto, ma ho
aggiunto ^ e $ per far si che venga matchata la riga completa che
contiene la frase in questione. A questo punto nell'espressione di
sostituzione usando quello_che_vuoi_inserire_prima\n\1 avrai come
risultato che la riga in questione sarà sostituita da
quello_che_vuoi_inserire_prima seguito da un \n (ovvero un accapo) e poi
dal contenuto di \1, ovvero tutta la riga che cercavi.
Se hai ancora dubbi fai un fischio.
Ciao.
--
Fabio Napoleoni
[EMAIL PROTECTED]
****************************************************************
"Computer Science is no more about computers than astronomy is
about telescopes"
Edsger W. Dijkstra
****************************************************************
--
Per REVOCARE l'iscrizione alla lista, inviare un email a
[EMAIL PROTECTED] con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a [EMAIL PROTECTED]
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]