Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 26

Discussione: voglia di bash!

  1. #11
    Originariamente inviato da lo©2002
    bè... mi sei proprio piaciuto, complimenti!
    /me si inchina

    ora si tratta di comprendere fino all'osso tutti questi comandi...
    Sto leggendo a pezzi e bocconi il manuale di awk e lo sto trovando davvero chiaro:
    http://www.gnu.org/software/gawk/man...index.html#Top
    per gli altri comandi, la manpagina e l'eventuale info pagina sono un buon punto di partenza.
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  2. #12
    lo©2002
    Guest
    purtroppo ora devo uscire... prometto che da stanotte mi documenterò e mi impegnerò a fondo!!!

    nuovamente gracias

  3. #13
    lo©2002
    Guest
    buongiorno... sempre io...
    allora, dopo un po' di prove due domandine...
    che differenza c'è fra
    awk '/^[^#].*/ {print $0}' < file

    awk '!/^#/' file
    e poi, per il mio primo quesito ho trovato che forse basta
    awk '!/^ *#/' file
    a proposito... i caratteri consecutivi fra le due "/.../" significano che cerco righe che iniziano con un numero di spazi indeterminati (spazio asterisco) seguiti da un cancelletto?

    un ultima cosetta. non è che mi daresti un eccenno sulle due strutture
    ifconfig ppp0 | awk '/\ *inet addr/ {print $2}' | cut -d\: -f2

    ifconfig ppp0 | awk '/\ *inet addr/ {split($2, a, ":");print a[2]}'
    grazie...
    tanto ci risentiamo

  4. #14
    Originariamente inviato da lo©2002
    che differenza c'è fra
    codice:
    awk '/^[^#].*/ {print $0}' < file
    awk '!/^#/' file
    Nessuna all'atto pratico (==risultato). La prima e` una complicazione inutile derivante da una mia deformazione di pensiero (per la redirezione della shell, di cui probabilmente abuso) e di una mia leggerezza
    (non ricordavo che il 'print $0') e` sostanzialmente implicito
    [edit]
    CALMA! non avevo fatto caso alla regexp, che e` diversa, allora le cose cambiano...
    [/edit]

    e poi, per il mio primo quesito ho trovato che forse basta
    Certamente, data l'equivalenza dei due comandi

    a proposito... i caratteri consecutivi fra le due "/.../" significano che cerco righe che iniziano con un numero di spazi indeterminati (spazio asterisco) seguiti da un cancelletto?
    Esatto. E` una regexp

    un ultima cosetta. non è che mi daresti un eccenno sulle due strutture
    Allora:
    codice:
    ifconfig ppp0 | awk '/\ *inet addr/ {print $2}' | cut -d\: -f2
    Applica il codice tra parentesi a tutte le righe che soddisfano la regexp (una riga contenente un qualunque numero di spazi, 'inet', spazio, 'addr' e qualsiasi altra cosa); divide la stringa in campi secondo il separatore standard (' ', spazio) e stampa il secondo campo;
    questo output e` passato a cut che lo divide ancora in campi secondo il separatore ':' e ne stampa il secondo.

    codice:
    ifconfig ppp0 | awk '/\ *inet addr/ {split($2, a, ":");print a[2]}'
    Stessa regexp, ma divide direttamente il secondo campo (ottenuto come sopra) in ulteriori sottocampi secondo il separatore ':', mettendoli nell'array 'a', di cui poi stampo il secondo elemento (in awk gli indici iniziano da 1)
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  5. #15
    lo©2002
    Guest
    ho appena trovato che c'è una differenza fra i primi due comandi:
    awk '!/^ *#/' file

    awk '/^[^ *#].*/' file
    il secondo non ha bisogno di "!" ed elimina anche le righe vuote.

    invece
    '/^[qualcosa].*/'
    cosa significa? fra le [...] va eseguito prima come in matematica?? :bubu:
    scusami ma mi sta prendendo benissimo!!

  6. #16
    Originariamente inviato da lo©2002
    ho appena trovato che c'è una differenza fra i primi due comandi:
    codice:
    awk '!/^ *#/' file
    
    awk '/^[^ *#].*/' file
    E certo! mea culpa, non avevo fatto caso alla regexp che e` diversa!.

    il secondo non ha bisogno di "!" ed elimina anche le righe vuote.
    come mai?
    Vediamo... La prima regexp e` /^ *#/ invertita: /^ *#/ cattura
    tutte le righe che iniziano con un qualunque numero di spazi seguiti da un cancelletto, quindi la regexp invertita cattura (e stampa)
    tutte le righe che noniniziano con un qualunque numero di spazi seguite da un cancelletto.
    La seconda cattura (e stampa) tutte le righe che iniziano per la sequenza che NON contiene "un qualunque numero di spazi seguito da un cancelletto", seguite da una serie qualunque di caratteri.

    E` un problema di logica e di ordine di valutazione...
    Forse ho cannato l'operatore "[^ ]", devo rivedere il manuale, non mi torna tanto che non stampi le righe vuote.
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  7. #17
    lo©2002
    Guest
    awk '/^./' file | awk '!/^\ *#/'
    con questa prima elimino le righe vuote (non ho caito bene perchè) e con la seconda elimino le righe commentate...

    :metallica sto' imparando!!

    grazie, grazie ancora

  8. #18
    Originariamente inviato da lo©2002
    con questa prima elimino le righe vuote (non ho caito bene perchè)

    codice:
    awk '/^./' file
    Perche` questa regexp e` soddisfatta dalle righe che iniziano per un carattere qualunque, e queste in pratica sono le righe che contengono solo l'accapo, ovvero le righe vuote.
    infatti
    codice:
    awk '/./' file
    ottiene lo stesso risultato

    e con la seconda elimino le righe commentate...
    Comunque, del perche` l'altra regexp NON sia soddisfatta anche con le righe bianche continuo a non spiegarmelo, a meno che...
    ...Forse ho capito, la soluzione nella prossima puntata...

    [edit] lapsus corretto (appunto)[/edit]
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  9. #19
    lo©2002
    Guest
    ok, a domani... esco a nche stasera me non riuscirò a non pensarci...

    grazie, ciao, alla prossima

  10. #20
    Originariamente inviato da Ikitt
    Comunque, del perche` l'altra regexp NON sia soddisfatta anche con le righe bianche continuo a non spiegarmelo, a meno che...
    ...Forse ho capito, la soluzione nella prossima puntata...
    Dunque, supponiamo per comodita` (ma senza perdere di generalita`, mi pare) che il file di testo in analisi sia composto solo da tre tipologia di righe:
    - inizia per '#' e comprende un qualsiasi numero di caratteri
    - NON inizia per '#' e comprende un qualsiasi numero di caratteri
    - comprende il solo '\n' (accapo)

    Ora: la regexp '^[^#].*' richiede che vi siano almeno due elementi nella riga: un qualsiasi carattere che non sia '#' piu` una qualsiasia altra serie di uno o piu` caratteri, accapo compreso.

    E` facile vedere che una riga vuota, composta solo di '\n', non soddisfera` quella regexp.
    Una riga 'altrettanto bianca', comprendente ad esempio spazi o tab (tipo ' \n' [spazio-accapo]) sara` invece soddisfatta e verra` stampata.
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.