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

    Cercare una stringa in un file di testo

    Come si fa a cercare all'interno di un file di testo le stringhe che contengano una determinata sottostringa (es. kernel-), in modo che vengano visualizzate NON le righe complete che contengono le stringhe, ma solo le stringhe in questione?

    Grazie.


  2. #2
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    man awk
    man grep
    man sed

    slack? smack!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    746
    Originariamente inviato da cacao74
    man awk
    man grep
    man sed
    man google

    @crys0000: non te la prendere se ti sono stati dati solo riferimenti a pagine di manuale (in ogni caso, la risposta alla tua domanda sta proprio nelle prime righe di quelle tre che ti ha indicato cacao74), ma è il millesimo thread nel giro di pochi giorni

    comunque, non esitare a chiedere nel caso ci fosse qualcosa che non ti torna in awk/sed/grep


  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    155
    Ho provato a leggere i manuali in questione, ma senza trovare la risposta alla mia domanda.

    In pratica ho provato a fare:

    codice:
    cat file | grep kernel-
    oppure

    codice:
    awk '/kernel-/ { print $0 }' file
    ma in entrambi i casi vengono visualizzate le righe complete, e non le singole stringhe contenenti il pattern.

    Come posso fare?

    Grazie.



  5. #5
    Originariamente inviato da crys0000
    ma in entrambi i casi vengono visualizzate le righe complete, e non le singole stringhe contenenti il pattern.

    Come posso fare?
    Devi usare una espressione regolare e egrep con l'opzione -o che visualizza solo il pattern cercato.

    codice:
    egrep -o '(kernel-)([\-\.\_0-9a-Z])+' [FILENAME]
    Questa espressione cerca tutte le stringhe che iniziano con "kernel-" e sono seguite da lettere a-z (maiuscole e minuscole), cifre 0-9 e i segni ".-_" quindi becca

    kernel-CP8989
    kernel-71-34a
    kernel-m.u.t.a.t.o
    etc.

    Assicurati che l'espressione scritta cosi' sia trasportabile sul tuo sistema (non sempre egrep si comporta allo stesso modo con versioni diverse di bash) e che corrisponda ai tuoi bisogni.

    poi mi unisco al coro: man egrep

    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

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.