Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    103

    problema shell command awk

    ciao a tutti....

    ho un problema con l'uso di awk.....

    se faccio ... echo $y | awk '{print $2}'
    ma se io faccio ....j=2....echo $y | awk '{print $j}'...mi da errore....come indirizzare correttamente la variabile???

    Grazie e ciaooo

  2. #2

    Re: problema shell command awk

    Originariamente inviato da billybilly

    se faccio ... echo $y | awk '{print $2}'
    ma se io faccio ....j=2....echo $y | awk '{print $j}'...mi da errore....come indirizzare correttamente la variabile???
    Cosa vuoi fare, di preciso?
    Che significa "indirizzare correttamente la variabile"?
    "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".

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    103

    significa

    cioe io devo fare dei tagli sull'output con awk all'interno di un ciclo aho un contatore j.... quindi alla prima iterazione voglio visualizzare la prima colonna alla seconda iterazione la seconda...ecc..ecc....

    in y(variabile di esempio)ho un particolare insieme di righe e colonne....un output normalissimo

    echo $y | awk '{print $j}'

    cioè se io facessi echo $y | awk '{print $2}' non mi crea problemi perche gli dico direttamente su quale colonna effettuare la mia selezione..... non riesco a fare il passaggio indirettamente cioè..

    se associo j=2 il numero della colonna che voglio del mio output
    non riesco a trovare la sintassi corretta :
    echo $y | awk '{print $j}

    in pratica se faccio cosi al posto di $j mi sostituisce 2 mentre la sintassi corretta mi richiede $2....

    quindi devo fare in modo di operare con il comando awk riferendomi non direttamente a una colonna ma in modo indiretto tramite l'uso di una qualsiasi variabile

    bo...spero si capisca :master:

  4. #4

    Re: significa

    Originariamente inviato da billybilly

    se associo j=2 il numero della colonna che voglio del mio output
    non riesco a trovare la sintassi corretta :
    echo $y | awk '{print $j}

    in pratica se faccio cosi al posto di $j mi sostituisce 2 mentre la sintassi corretta mi richiede $2....

    quindi devo fare in modo di operare con il comando awk riferendomi non direttamente a una colonna ma in modo indiretto tramite l'uso di una qualsiasi variabile
    Capito adesso. Il problema sta nel quoting della shell, gli operatori '' (usati per proteggere il codice awk e non farlo interpretare dalla shell) ammazzano il significato della sostituzione di variabile: $j lo interpreta awk, non la shell, e il risultato e` quello che e`.
    Soluzioni possibili:

    - se le istruzioni awk sono poche e/o semplici, usa un quoting piu` blando, tipo "{ print $j }", una cosa tipo
    codice:
     for i in `seq 1 10`; do echo $i | awk "{ print \$$i}"; done
    - fai fare il ciclo ad awk. Come fare dipende dal particolare compito.
    "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. #5
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    103
    SEI un grande Grazie adesso lo provo Ciaoooooo

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 © 2024 vBulletin Solutions, Inc. All rights reserved.