Uso spesso grep per trovare file con una determinata voce come questa:
grep -R 'MyClassName'
La cosa buona è che restituisce i file, i loro contenuti e segna la stringa trovata in rosso. La cosa brutta è che ho anche enormi file in cui l'intero testo è scritto in un'unica grande riga. Ora grep emette troppo quando trova testo all'interno di quei file di grandi dimensioni. Esiste un modo per limitare l'output, ad esempio, a 5 parole a sinistra ea destra? O forse limitare l'output a 30 lettere a sinistra ea destra?
cut
, poiché si divide solo dal delimitatore o dal conteggio dei personaggi. Tuttavia, quando trovo una linea con MyClassName
essa può essere ovunque nella linea e non sempre nella stessa posizione. Inoltre, potrebbe esserci una variazione di caratteri nella parte anteriore e posteriore, che rompe la possibilità di dividere per delimitatore.
MyClassName
è stata trovata una linea positiva con , voglio ottenere come risultato il nome del file e i caratteri x a sinistra ea destra. x è qualsiasi numero fornito, ad esempio 30. Il resto del contenuto del file deve essere ignorato. Questo per ottenere un contesto per i file corrispondenti e limitare il sovraccarico.
cut
se ci sono tre file con il seguente input: oiadfaosuoianavMyClassNameionaernaldfajd
e /(/&%%§%/(§(/MyClassName&((/$/$/(§/$&
e public class MyClassName { public static void main(String[] args) { } }
?
cut