Grep 20 personaggi dopo e prima della partita


14

Ho il problema di ottenere troppe informazioni dopo la partita

grep -RnisI --color=auto "pseudomonas" *

Voglio ottenere solo 20 caratteri o 10 parole dopo e prima della partita.

Qual è lo strumento giusto per fare una cosa del genere?


1
Il tuo set di opzioni è un po 'strano quando ti lamenti per troppe informazioni. Vuoi visualizzare una riga dopo e prima della partita ( -A1e -B1risp.), Ma è troppo? Dove vuoi esattamente ritagliare il tuo output?
Andreas Wiese,

1
Puoi dare un esempio di input e di output che ti aspetti?
Ramesh,

Ho modificato il comando, ho testato in Ubuntu 13.10, fammi sapere se funziona per te. Ho un'opzione grep e un'opzione egrep
Eric

Risposte:


23
cat file.txt | grep -o -P '.{0,20}string.{0,20}'

Questo dovrebbe farlo per te

Aggiornare:

Se non vuoi cat, puoi semplicemente usare grep con il file come parametro:

grep -o -P '.{0,20}pseudomonas.{0,20}' FileName.html

Inoltre, -P usa Perl Regex, che le pagine man dicono sia sperimentale, se vuoi evitare quella bandiera, puoi semplicemente usare egrep invece:

grep -Eo '.{0,20}yourstring.{0,20}' yourtestfile.txt

Che brutto file di test hai;)
Ouki

Il resto del file è davvero utile, che fa parte di un commento su più righe nel mezzo di uno Schema che doveva essere escluso senza interrompere il nostro parser, era solo una buona linea per provarlo.
Eric

Dal momento che è uno dei miei file, è impostato su 755, ma posso vedere come cat potrebbe non essere l'ideale per un file HTML, puoi provare a passare il nome del file a grep come parametro, vedi la mia modifica.
Eric

Voglio dire con 777 file che hai 777 copie di file diversi, non la cosa chown. Corro $$$ egrep -o '. {0,20} pseudomonas. {0,20}' * $$$. Il comando rimane lì all'infinito e non fa nulla. Questo, di nuovo, sembra funzionare $$$ egrep -ori '. {0,20} pseudomonas. {0,20}' * $$$. Lo stesso con la ricorsione e il case-insetitive. Tuttavia, è molto lento. Penso che non dovrebbe essere così lento. Grep è stato molto più veloce.
Léo Léopold Hertz

se catting non funziona, puoi sempre inserirlo in un file aggiungendolo > results.txtalla fine del tuo comando, ma non ti dirà in quale file lo hai trovato.
Eric

4
pcregrep -MnirIso '(?s).{0,20}pseudomonas.{0,20}' . |
  grep --color -e '^' -e pseudomonas

Presuppone che le corrispondenze e il loro contesto non si sovrappongano e che i nomi dei file non contengano pseudomonas.

Si noti inoltre che i numeri di riga riportati sono quelli dell'inizio del contesto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.