|
|
Re: Sto impazzendo con "sed". Quale NG? [messaggio #33974 è una risposta a message #33972] |
mer, 01 dicembre 2010 16:36 |
Archaeopteryx Messaggi: 80 Registrato: agosto 2011 |
Member |
|
|
Il 01/12/2010 16.16, RedWiz ha scritto:
>> Come da oggetto. Per problemi di questo genere (in
>> pratica non mi fungono i sub-patterns) qual Ú il NG
>> giusto per chiedere?
>
> questo
Mmmm sicuro? :) A me non sembra troppo un problema di uso del
S.O., e mi scoccerebbe contribuire agli OT qui... Comunque
eccolo qua.
Ho un file sorgente in "c" in cui devo cambiare nomi a una
serie di identificatori con l'opzione che per un editor
sarebbe "solo parole intere". Ho scritto un file di
comandi per sed che invoco così:
sed -f filename_commands file_ingresso.c > file_out.c
Ogni linea del file comandi contiene una cosa del genere:
s/([ \*])old_string([ \;\:\(\)\[\]])/\1replacement_string/\2g
Nelle mie intenzioni dovrebbe cercare qualsiasi stringa
inizi per spazio o carattere '*' (nel caso abbia qualcosa
del tipo "void *ptr;"), poi l'identificatore da cercare,
poi ancora spazio, punto e virgola, due punti, parentesi
tonda aperta e chiusa, parentesi quadra aperta e chiusa (e
temo che ancora manchi qualcosa nella sintassi del "c"). E
per giunta ho anche identificatori a inizio linea ma non
trovo qual è il carattere corrispondente su nessun tutorial.
Mi aspetterei che quello che precede la stringa sia
ricordato come "\1" e quello che la segue come "\2". Ma
quando vado a invocare sed, a seconda delle varianti che
tento su quel genere di comando il file modificato risulta
vuoto oppure identico all'originale. Ho provato anche a
racchiudere il comando tra virgolette semplici e doppie ma
niente.
Cosa sbaglio???
thanks!
Apx.
--
Vorrei morire dormendo come mio nonno
e non urlando come i suoi passeggeri.
|
|
|
Re: Sto impazzendo con "sed". Quale NG? [messaggio #33977 è una risposta a message #33974] |
mer, 01 dicembre 2010 17:25 |
Marco Messaggi: 226 Registrato: giugno 2007 |
Senior Member |
|
|
On Wed, 01 Dec 2010 16:36:31 +0100
Archaeopteryx <cor.bonukFANCULOSPAM@libero_NOMAIL_.it> wrote:
> Il 01/12/2010 16.16, RedWiz ha scritto:
> >> Come da oggetto. Per problemi di questo genere (in
> >> pratica non mi fungono i sub-patterns) qual Ú il NG
> >> giusto per chiedere?
> >
> > questo
>
> Mmmm sicuro? :) A me non sembra troppo un problema di uso del
> S.O., e mi scoccerebbe contribuire agli OT qui... Comunque
> eccolo qua.
>
> Ho un file sorgente in "c" in cui devo cambiare nomi a una
> serie di identificatori con l'opzione che per un editor
> sarebbe "solo parole intere". Ho scritto un file di
> comandi per sed che invoco così:
>
> sed -f filename_commands file_ingresso.c > file_out.c
>
> Ogni linea del file comandi contiene una cosa del genere:
>
> s/([ \*])old_string([ \;\:\(\)\[\]])/\1replacement_string/\2g
>
> Nelle mie intenzioni dovrebbe cercare qualsiasi stringa
> inizi per spazio o carattere '*' (nel caso abbia qualcosa
> del tipo "void *ptr;"), poi l'identificatore da cercare,
> poi ancora spazio, punto e virgola, due punti, parentesi
> tonda aperta e chiusa, parentesi quadra aperta e chiusa (e
> temo che ancora manchi qualcosa nella sintassi del "c"). E
> per giunta ho anche identificatori a inizio linea ma non
> trovo qual è il carattere corrispondente su nessun tutorial.
Comincia con una cosa tipo
sed 's/\bold_string\b/replacement_string/g'
\b e' fatto apposta.
> Mi aspetterei che quello che precede la stringa sia
> ricordato come "\1" e quello che la segue come "\2". Ma
> quando vado a invocare sed, a seconda delle varianti che
> tento su quel genere di comando il file modificato risulta
> vuoto oppure identico all'originale. Ho provato anche a
> racchiudere il comando tra virgolette semplici e doppie ma
> niente.
Mi pare che si debba usare \(...\) per catturare e avere le
backreference \1, \2 dopo.
Esempio:
echo abc | sed 's/\(.\)b\(.\)/\1X\2/'
aXc
--
Cio' che si vede, e'.
|
|
|
|
|
|
|
|
Re: Sto impazzendo con "sed". Quale NG? [messaggio #33996 è una risposta a message #33989] |
gio, 02 dicembre 2010 14:04 |
Archaeopteryx Messaggi: 80 Registrato: agosto 2011 |
Member |
|
|
Il 02/12/2010 11.27, Alessandro Selli ha scritto:
> Attento Marco, che Archeo per ringraziarti potrebbe
> portarti una bambola gonfiabile a casa nel pieno della
> notte senza preavviso!
quando stavo aprendo il portabagagli dicendoti che stavo
per consegnartela, posso assicurarti che avevi l'aspetto
di quello che ci credeva davvero. O sei un attore
eccezionale tu, o io sono un attore decente :P
ancora grazie a tutti voi!
Apx
--
Vorrei morire dormendo come mio nonno
e non urlando come i suoi passeggeri.
|
|
|