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.
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.
man googleOriginariamente inviato da cacao74
man awk
man grep
man sed
@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
Ho provato a leggere i manuali in questione, ma senza trovare la risposta alla mia domanda.
In pratica ho provato a fare:
oppurecodice:cat file | grep kernel-
ma in entrambi i casi vengono visualizzate le righe complete, e non le singole stringhe contenenti il pattern.codice:awk '/kernel-/ { print $0 }' file
Come posso fare?
Grazie.
Devi usare una espressione regolare e egrep con l'opzione -o che visualizza solo il pattern cercato.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?
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 beccacodice:egrep -o '(kernel-)([\-\.\_0-9a-Z])+' [FILENAME]
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