Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26

Discussione: voglia di bash!

  1. #1
    lo©2002
    Guest

    voglia di bash!

    ragazzi, ciao a tutti...

    ho una questioncina che faccio prima a porvi direttamente:
    avendo un file di testo (oppure l'output di un comando) come faccio per dirgli di prendere la parole dopo (o prima) di un carettere (o una stringa)...
    e se invece volessi da un file crearne uno nuovo formato solamente dalle righe abilitate del primo?

    spero di essermi spiegato bene... sono tutte cosette che vorrei fare al volo ma purtroppo non ho ancora abbastanza dimestichezza con la shell...

    grazie a tutti!!

  2. #2

    Re: voglia di bash!

    Originariamente inviato da lo©2002
    avendo un file di testo (oppure l'output di un comando) come faccio per dirgli di prendere la parole dopo (o prima) di un carettere (o una stringa)...
    Uhm detta cosi` e` un po` un casino, non mi viene in mente una soluzione generale. Gli ingredienti sono sempre i soliti, cut, grep, awk (fighissimo! ), sed e compagni d'armi, ma per la particolare riga di comando dipende largamente dal formato dell'output...

    e se invece volessi da un file crearne uno nuovo formato solamente dalle righe abilitate del primo?
    una pipe con grep dovrebbe essere sufficiente...
    "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
    lo©2002
    Guest
    una pipe con grep dovrebbe essere sufficiente...
    grazie intanto per la risposta... un semplice
    cat file1 | grep -v #
    non va bene perchè non tiene conto del fatto che il cancelletto deve essere il primo carattere della riga... no?

    grazie

  4. #4
    Originariamente inviato da lo©2002
    grazie intanto per la risposta... un semplice non va bene perchè non tiene conto del fatto che il cancelletto deve essere il primo carattere della riga... no?
    Allora, grep e` bello possente e permette di usare le regexp che sono una manna per queste cose, pero` adesso son fissato con awk per cui...

    Assumendo che il cancelletto possa trovarsi SOLO all'inizio di una riga:
    codice:
    awk '/^[^#].*/ {print $0}' < file
    lo stesso con grep:
    codice:
    egrep -E '^[^#].*' < file
    "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
    lo©2002
    Guest


    ...e se invece il '#' è si il primo carattere utile della riga ma non è nella prima colonna?

    rigrazie

  6. #6
    lo©2002
    Guest
    già che ci sono ti faccio un mini-esempio anche per il primo quesito che avevo posto:
    vorrei come output il mio indirizzo ip prendendolo da ifconfig.
    se faccio
    ifconfig | grep P-t-P
    ottengo
    inet addr:xxx.xxx.xxx.xxx P-t-P:xxx.xxx.xxx.xxx Mask:255.255.255.255
    quindi ho bisogno di dirgli: prendi la stringa di caratteri prima di 'P-t-P', a ritroso fino ai ':' (due punti)... macchinoso però è per avere un esempio di tutti quei 'comandini fichissimi'

  7. #7
    Originariamente inviato da lo©2002
    ...e se invece il '#' è si il primo carattere utile della riga ma non è nella prima colonna?
    Si passa da cut...

    codice:
    [...] | cut -d\# [altre_opzioni] | [...]
    Data la genericita` della questione non posso che rimandarti alla pagina di manuale...
    "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".

  8. #8
    lo©2002
    Guest
    ...finora è stato un piacere...

  9. #9
    Originariamente inviato da lo©2002
    vorrei come output il mio indirizzo ip prendendolo da ifconfig.
    se faccioottengo quindi ho bisogno di dirgli: prendi la stringa di caratteri prima di 'P-t-P', a ritroso fino ai ':' (due punti)... macchinoso però è per avere un esempio di tutti quei 'comandini fichissimi'
    Inutilmente macchinoso... Andare a ritroso e` sempre abbastanza complicato, meglio andare "verso l'avanti" ovunque sia possibile IMHO.

    Allora, questo e` un problema classico, la mia migliore performance attuale e`:
    codice:
    /sbin/ifconfig ppp0 | awk '/\ *inet addr/ {print $2}' | cut -d\: -f2
    ma conto di riuscire a migliorare eliminando anche il secondo cut...

    [edit]
    detto fatto...
    codice:
    /sbin/ifconfig eth0 | awk '/\ *inet addr/ {split($2, a, ":");print a[2]}'
    [/edit]
    con due cut ed un grep, invece:
    codice:
    /sbin/ifconfig ppp0 | grep "inet addr" | cut -d\: -f 2 | cut -d\  -f1
    "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".

  10. #10
    lo©2002
    Guest

    bè... mi sei proprio piaciuto, complimenti!
    un giorno le farò al volo anch'io queste cosette, dieta di pane e shell per un bel po'...
    ora si tratta di comprendere fino all'osso tutti questi comandi...

    grazie mille, davvero

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