Può grep evidenziare il testo corrispondente senza nascondere il contenuto del file?

7

Uso frequentemente le opzioni della riga di comando del contesto di grep ( -A , -B e -C ), ma occasionalmente voglio visualizzare l'intero file con le espressioni corrispondenti evidenziate. Per realizzare questo attualmente, ho semplicemente specificato -C 999999999 , ma questo sembra sciocco.

Esiste un'opzione all'interno del pacchetto grep di OS X che mi consentirà di sfruttare facilmente le funzionalità di corrispondenza e colorazione di grep, senza nascondere alcun contenuto di file?

    
posta Jason Salaz 03.08.2012 - 10:13
fonte

3 risposte

13

Non penso ci sia alcuna opzione semplice in grep ma sembra funzionare bene. Dal link

grep --color -E "pattern|$" file

Il |$ alla fine dell'espressione regolare rende grep find pattern O end of lines. Tuttavia, non è in grado di evidenziare quelli, quindi solo il motivo si colora.

    
risposta data 03.08.2012 - 11:28
fonte
6

Supponendo che tu voglia leggere il file da solo, con i bit evidenziati, meno è lo strumento migliore per il lavoro. less yourfile , digita / , il tuo pattern e hit return. n passa alla corrispondenza successiva e space alla pagina successiva.

In alternativa, ack ha una modalità --passthru che fa ciò che vuoi. ack è così follemente utile che vale la pena esaminare.

    
risposta data 11.10.2012 - 23:22
fonte
2

L'impostazione di -C su un numero intero negativo sembra essere equivalente all'impostazione di un numero arbitrariamente grande.

grep something --color -C -1 *.txt

Ma come con qualcosa come -C 9999999 , se il file ha più corrispondenze, alcune linee possono essere stampate più volte.

    
risposta data 03.08.2012 - 19:06
fonte

Leggi altre domande sui tag