Live Support My forum, my way! Il forum dei newsgroup: Linux » Sto impazzendo con "sed". Quale NG?
My forum, my way! Il forum dei newsgroup
Fast Uncompromising Discussions.Newsgroup FUDforum will get your users talking.

Loading
Utenti      F.A.Q.    Registrati    Login    Home
Home » Computer » Linux » Sto impazzendo con "sed". Quale NG?
Sto impazzendo con "sed". Quale NG? [messaggio #33971] mer, 01 dicembre 2010 16:12 Messaggio successivo
Archaeopteryx  è attualmente disconnesso Archaeopteryx
Messaggi: 80
Registrato: agosto 2011
Member
Come da oggetto. Per problemi di questo genere (in pratica
non mi fungono i sub-patterns) qual è il NG giusto per
chiedere?

thanks!

Apx.

--
Vorrei morire dormendo come mio nonno
e non urlando come i suoi passeggeri.
Re: Sto impazzendo con "sed". Quale NG? [messaggio #33972 è una risposta a message #33971] mer, 01 dicembre 2010 16:16 Messaggio precedenteMessaggio successivo
RedWiz  è attualmente disconnesso RedWiz
Messaggi: 147
Registrato: novembre 2010
Senior Member
Il Wed, 01 Dec 2010 16:12:49 +0100, Archaeopteryx 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
Re: Sto impazzendo con "sed". Quale NG? [messaggio #33974 è una risposta a message #33972] mer, 01 dicembre 2010 16:36 Messaggio precedenteMessaggio successivo
Archaeopteryx  è attualmente disconnesso 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 Messaggio precedenteMessaggio successivo
Marco  è attualmente disconnesso 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 &quot;sed&quot;. Quale NG? [messaggio #33978 è una risposta a message #33974] mer, 01 dicembre 2010 18:08 Messaggio precedenteMessaggio successivo
RedWiz  è attualmente disconnesso RedWiz
Messaggi: 147
Registrato: novembre 2010
Senior Member
Il Wed, 01 Dec 2010 16:36:31 +0100, Archaeopteryx ha scritto:



> 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.

guarda fammi un esempio concreto che non c'ho capito niente :)
Re: Sto impazzendo con &quot;sed&quot;. Quale NG? [messaggio #33979 è una risposta a message #33971] mer, 01 dicembre 2010 18:09 Messaggio precedenteMessaggio successivo
mallin.shetland  è attualmente disconnesso mallin.shetland
Messaggi: 129
Registrato: novembre 2010
Senior Member
Addì mercoledì 1 dicembre 2010 16:12 Archaeopteryx scrisse:

> Come da oggetto. Per problemi di questo genere (in pratica
> non mi fungono i sub-patterns) qual è il NG giusto per
> chiedere?


Questo, poni la domanda.
Re: Sto impazzendo con &quot;sed&quot;. Quale NG? [messaggio #33981 è una risposta a message #33974] mer, 01 dicembre 2010 18:31 Messaggio precedenteMessaggio successivo
mallin.shetland  è attualmente disconnesso mallin.shetland
Messaggi: 129
Registrato: novembre 2010
Senior Member
Addì mercoledì 1 dicembre 2010 16:36 Archaeopteryx scrisse:

> ...
> 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
> ...

Secondo me basta che tu faccia:

sed 's/\bold_id_1\b/new_id_1/g
s/\bold_id_2\b/new_id_2/g
....
s/\bold_id_n\b/new_id_n/g
' infile.c > outfile.c

ma non riuscendo a capire cosa tu vuoi veramente fare
non so se questo basti per i tuoi scopi.

Inoltre stai sbagliando tutti igli escape. Cioè:

( e ) corrispondono alle normali parentesi

\( e \) sono gli operatori di ragruppamento

e così via.
Re: Sto impazzendo con &quot;sed&quot;. Quale NG? [messaggio #33983 è una risposta a message #33977] mer, 01 dicembre 2010 19:02 Messaggio precedenteMessaggio successivo
Archaeopteryx  è attualmente disconnesso Archaeopteryx
Messaggi: 80
Registrato: agosto 2011
Member
Il 01/12/2010 17.25, Marco ha scritto:

> Mi pare che si debba usare \(...\) per catturare e
> avere le backreference \1, \2 dopo.

Grazieeeee! Ha funto ma a caro prezzo, spero di aver
"preso" tutte le possibilità che possono capitare. Ecco un
esempio del mostro che è venuto fuori :)

s/\([[:space:]\*\.,;\(\)\+\-\/\&^]\)SCommand_GeneralPara ms\([[:space:]\.;:\(\)\+\-\*\/\&$]\)/\1StructGeneral_Par ams\2/g

Grande NG!!!!

ciao!

Apx.

--
Vorrei morire dormendo come mio nonno
e non urlando come i suoi passeggeri.
Re: Sto impazzendo con &quot;sed&quot;. Quale NG? [messaggio #33989 è una risposta a message #33983] gio, 02 dicembre 2010 11:27 Messaggio precedenteMessaggio successivo
Alessandro Selli  è attualmente disconnesso Alessandro Selli
Messaggi: 242
Registrato: novembre 2010
Senior Member
Archaeopteryx ha scritto:
> Il 01/12/2010 17.25, Marco ha scritto:
>
>> Mi pare che si debba usare \(...\) per catturare e
>> avere le backreference \1, \2 dopo.
>
> Grazieeeee!

[...]

> Grande NG!!!!

Attento Marco, che Archeo per ringraziarti potrebbe portarti una bambola
gonfiabile a casa nel pieno della notte senza preavviso!


Ciao,


--
Alessandro Selli, http://alessandro.route-add.net
AVVERTENZA: i messaggi inviati a "trappola" non mi arriveranno.
WARNING: messages sent to "trappola" will never reach me.
Chiave PGP/GPG: EC885A8B
Re: Sto impazzendo con &quot;sed&quot;. Quale NG? [messaggio #33996 è una risposta a message #33989] gio, 02 dicembre 2010 14:04 Messaggio precedente
Archaeopteryx  è attualmente disconnesso 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.
Argomento precedente:Strumentino di tracciamento ticket via Mail
Argomento successivo:Workaround per Skype
Vai al forum:
  


Ora corrente: sab giu 08 23:42:27 CEST 2024

Tempo totale richiesto per generare la pagina: 0.00927 secondi
.:: Contatti :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Live Support