Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di fausto
    Registrato dal
    Jun 2002
    Messaggi
    294

    regexp] riferimento a sottostringhe

    Ciao ragazzi.

    Supponiamo che io abbia dei nomi che contengono, fra l'altro, dei numeri e che la sistemazione di questi numeri si del tipo [0-9]+_[0-9] a caso in mezzo ai nomi;
    come faccio ad estrarre la stringa corrispondente? (nb: io a priori non la so)
    per intenderci
    ho dei nomi del tipo
    relax_notimeLatiSat_06_2.ris
    io vorrei mettere in una variabile il valore 06_2.
    In perl si fa facilmente perche'se uso delle parentesi nelle regexp, poi posso farci riferimento con delle variabili che si creano automaticamente.
    E' possibile fare qualcosa di simile in uno script di shell?
    :master:
    laptop asus L5800C
    slackware 11.0 kernel 2.6.17

  2. #2
    awk supporta il grouping nelle regexp

    man awk
    Ci sono cose che non si possono sapere. Per tutto il resto c'è man

    Prima di fare domande stupide: 1) googla 2) leggi le manpages 3) sparati.

  3. #3
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    codice:
    [spedone@slack ~]$ echo relax_notimeLatiSat_06_2.ris | \
    sed 's/.*_\([0-9]\+_[0-9]\)\..*/\1/'
    06_2
    ciao
    slack? smack!

  4. #4
    Utente di HTML.it L'avatar di fausto
    Registrato dal
    Jun 2002
    Messaggi
    294
    Grande cacao74!

    Io avevo letto che si poteva fare riferimento ad una sottostringa che era stato machata, ma credevo si potesse fare solo all'interno espressione regolare stessa (tipo se hai un pattern che si ripete).
    sed 's///' sostituisce la stringa che trovanel primo // con quello che sta nel secondo// e tu gli hai detto di sostutuire tutto il nome con la cosa machata, riferendola con \1.
    Se avessi avuto piu' argomenti, con \2 ecc.

    Alternativamente uno poteva scrivere:
    relax_notimeLatiSat_06_2.ris | sed 's/.*\([0-9]\{2\}_[0-9]\).*/\1/'
    perche' io so che sono necessariamente 2 i primi numeri


    E' potentissimo!

    Grazie,
    f
    laptop asus L5800C
    slackware 11.0 kernel 2.6.17

  5. #5
    Utente di HTML.it L'avatar di fausto
    Registrato dal
    Jun 2002
    Messaggi
    294
    manca l'echo.... :rollo:
    laptop asus L5800C
    slackware 11.0 kernel 2.6.17

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.