Live Support My forum, my way! Il forum dei newsgroup: Linux » awk: invertire campi righe pari e stamparle con le dispari
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 » awk: invertire campi righe pari e stamparle con le dispari
awk: invertire campi righe pari e stamparle con le dispari [messaggio #120890] ven, 23 settembre 2011 13:39 Messaggio successivo
Lutrin  è attualmente disconnesso Lutrin
Messaggi: 108
Registrato: dicembre 2010
Senior Member
avendo una serie di dati in colonna:

valore 1 valore 2
valore 1 valore 2
valore 1 valore 2
ecc...

volevo invertirne i campi delle righe pari, stampandoli poi assieme alle
dispari

valore 1 valore 2
valore 2 valore 1
valore 1 valore 2
ecc...

con:

awk 'NR%2==0 { print $ $1 }'

effettivamente ci riesco, ma vengono stampate solo le righe pari e non le
righe dispari così come sono, più le righe pari coi campi invertiti

--
Puppy Linux wiki: http://dokupuppylinux.tk
Puppy Linux Forum: http://www.italianpuppy.org/
Windows me genuit, Ubuntu rapuere / tenet nunc Puppy Linux...
invito dropbox 2GB free - http://db.tt/Vc6IeN4
Re: awk: invertire campi righe pari e stamparle con le dispari [messaggio #120938 è una risposta a message #120890] ven, 23 settembre 2011 16:50 Messaggio precedenteMessaggio successivo
Lutrin  è attualmente disconnesso Lutrin
Messaggi: 108
Registrato: dicembre 2010
Senior Member
On Fri, 23 Sep 2011 11:39:28 +0000, Lutrin ci disse:

> volevo invertirne i campi delle righe pari, stampandoli poi assieme alle
> dispari
[...]
trovato: così funziona:

awk 'NR % 2==1 { print $1, $2 } NR % 2==0 { print $2, $1 }'

in questo modo ottengo proprio le righe pari coi campi invertiti e quelle
dispari stampate assieme alle pari coi campi nella loro originale
disposizione

es, da:
valore 1 valore 2 (riga dispari)
valore 1 valore 2 (riga pari)
valore 1 valore 2 (riga dispari)
valore 1 valore 2 (riga pari)
ecc...

ottengo:

valore 1 valore 2 (riga dispari)
valore 2 valore 1 (riga pari)
valore 1 valore 2 (riga dispari)
valore 2 valore 1 (riga pari)
ecc...

--
Puppy Linux wiki: http://dokupuppylinux.tk
Puppy Linux Forum: http://www.italianpuppy.org/
Windows me genuit, Ubuntu rapuere / tenet nunc Puppy Linux...
invito dropbox 2GB free - http://db.tt/Vc6IeN4
Re: awk: invertire campi righe pari e stamparle con le dispari [messaggio #120939 è una risposta a message #120890] ven, 23 settembre 2011 16:50 Messaggio precedenteMessaggio successivo
mallin.shetland  è attualmente disconnesso mallin.shetland
Messaggi: 129
Registrato: novembre 2010
Senior Member
Addì venerdì 23 settembre 2011 13:39 Lutrin scrisse:
> ...
> awk 'NR%2==0 { print $ $1 }'
>
> effettivamente ci riesco, ma vengono stampate solo le righe pari e non le
> righe dispari così come sono, più le righe pari coi campi invertiti

ovviamnete volevi scrivere:

awk 'NR%2==0 { print $2 $1 }'


Senza saper né leggere né scivere:

awk 'NR%2==0 { print $2, $1 }; NR%2==1 { print }'

Con un po' di immaginazione però:

awk '{ print ; getline ; print $2, $1 }'
Re: awk: invertire campi righe pari e stamparle con le dispari [messaggio #121009 è una risposta a message #120939] ven, 23 settembre 2011 18:05 Messaggio precedenteMessaggio successivo
Lutrin  è attualmente disconnesso Lutrin
Messaggi: 108
Registrato: dicembre 2010
Senior Member
On Fri, 23 Sep 2011 16:50:46 +0200, mallin.shetland ci disse:

> awk 'NR%2==0 { print $2, $1 }; NR%2==1 { print }'
>
> Con un po' di immaginazione però:
>
> awk '{ print ; getline ; print $2, $1 }'
[...]
grazie, non trovando il paragrafo giusto nel manuale (lungo) avevo
escogitato

awk 'NR % 2==1 { print $1, $2 } NR % 2==0 { print $2, $1 }'

che anche se funziona è certo tautologico (e immagino non tanto corretto)
--
Puppy Linux wiki: http://dokupuppylinux.tk
Puppy Linux Forum: http://www.italianpuppy.org/
Windows me genuit, Ubuntu rapuere / tenet nunc Puppy Linux...
invito dropbox 2GB free - http://db.tt/Vc6IeN4
Re: awk: invertire campi righe pari e stamparle con le dispari [messaggio #121010 è una risposta a message #121009] ven, 23 settembre 2011 18:47 Messaggio precedenteMessaggio successivo
mallin.shetland  è attualmente disconnesso mallin.shetland
Messaggi: 129
Registrato: novembre 2010
Senior Member
Addì venerdì 23 settembre 2011 18:05 Lutrin scrisse:

> On Fri, 23 Sep 2011 16:50:46 +0200, mallin.shetland ci disse:
>
>> awk 'NR%2==0 { print $2, $1 }; NR%2==1 { print }'
>>
>> Con un po' di immaginazione però:
>>
>> awk '{ print ; getline ; print $2, $1 }'
> [...]
> grazie, non trovando il paragrafo giusto nel manuale (lungo) avevo
> escogitato
>
> awk 'NR % 2==1 { print $1, $2 } NR % 2==0 { print $2, $1 }'
>
> che anche se funziona è certo tautologico (e immagino non tanto corretto)


Non è nè scorretto nè tautologico ma è inefficiente poiché ripeti
due volte lo stesso test. Comunque se proprio non puoi resistere:

awk 'TEST=(NR%2){print$1,$2}!TEST{print$2,$1}'
Re: awk: invertire campi righe pari e stamparle con le dispari [messaggio #121117 è una risposta a message #121009] ven, 23 settembre 2011 21:15 Messaggio precedenteMessaggio successivo
Marco  è attualmente disconnesso Marco
Messaggi: 226
Registrato: giugno 2007
Senior Member
On Fri, 23 Sep 2011 16:05:26 GMT, Lutrin <elicona@olympo.it> wrote:

> On Fri, 23 Sep 2011 16:50:46 +0200, mallin.shetland ci disse:
>
> > awk 'NR%2==0 { print $2, $1 }; NR%2==1 { print }'
> >
> > Con un po' di immaginazione però:
> >
> > awk '{ print ; getline ; print $2, $1 }'
> [...]
> grazie, non trovando il paragrafo giusto nel manuale (lungo) avevo
> escogitato
>
> awk 'NR % 2==1 { print $1, $2 } NR % 2==0 { print $2, $1 }'
>
> che anche se funziona è certo tautologico (e immagino non tanto corretto)

Prova questo:

awk '{print $(2-NR%2), $(NR%2+1)}'




--
Cio' che si vede, e'.
Re: awk: invertire campi righe pari e stamparle con le dispari [messaggio #121328 è una risposta a message #121117] sab, 24 settembre 2011 10:26 Messaggio precedenteMessaggio successivo
mallin.shetland  è attualmente disconnesso mallin.shetland
Messaggi: 129
Registrato: novembre 2010
Senior Member
Addì venerdì 23 settembre 2011 21:15 Marco scrisse:

> Prova questo:
>
> awk '{print $(2-NR%2), $(NR%2+1)}'

o anche questo:

awk '{if (NR%2==0) {T=$1; $1=$2; $2=T} print}'
Re: awk: invertire campi righe pari e stamparle con le dispari [messaggio #122263 è una risposta a message #120890] dom, 25 settembre 2011 22:18 Messaggio precedente
gb  è attualmente disconnesso gb
Messaggi: 10
Registrato: novembre 2010
Junior Member
awk '{if(NR%2) print; else print $2, $1}'
--
miao pinione -- Theo, in IHC
Argomento precedente:Problema io-slave klauncher kio_desktop
Argomento successivo:Problemi cercando di allargare una partizione
Vai al forum:
  


Ora corrente: mer mag 01 20:48:08 CEST 2024

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

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

Live Support