español ejemplos bash grep

bash - ejemplos - Grep personajes antes y después del partido?



if grep bash (5)

Usando esto:

grep -A1 -B1 "test_pattern" file

producirá una línea antes y después del patrón coincidente en el archivo. ¿Hay alguna forma de mostrar líneas no pero un número específico de caracteres?

Las líneas en mi archivo son bastante grandes, así que no estoy interesado en imprimir toda la línea, sino que solo observo la coincidencia en contexto. ¿Alguna sugerencia sobre cómo hacer esto?


3 caracteres antes y 4 caracteres después

$> echo "some123_string_and_another" | grep -o -P ''.{0,3}string.{0,4}'' 23_string_and


Con gawk , puede usar la función de coincidencia:

x="hey there how are you" echo "$x" |awk --re-interval ''{match($0,/(.{4})how(.{4})/,a);print a[1],a[2]}'' ere are

Si está bien con perl , solución más flexible: A continuación, se imprimirán tres caracteres antes del patrón seguido de un patrón real y luego de 5 caracteres después del patrón.

echo hey there how are you |perl -lne ''print "$1$2$3" if /(.{3})(there)(.{5})/'' ey there how

Esto también se puede aplicar a las palabras en lugar de solo a los caracteres. A continuación, se imprimirá una palabra antes de la cadena de coincidencia real.

echo hey there how are you |perl -lne ''print $1 if /(/w+) there/'' hey

A continuación se imprimirá una palabra después del patrón:

echo hey there how are you |perl -lne ''print $2 if /(/w+) there (/w+)/'' how

A continuación se imprimirá una palabra antes del patrón, luego la palabra real y luego una palabra después del patrón:

echo hey there how are you |perl -lne ''print "$1$2$3" if /(/w+)( there )(/w+)/'' hey there how


Podrías usar

awk ''/test_pattern/ { match($0, /test_pattern/); print substr($0, RSTART - 10, RLENGTH + 20); }'' file


Quieres decir así:

grep -o ''./{0,20/}test_pattern./{0,20/}'' file

?

Eso imprimirá hasta veinte caracteres en cualquier lado de test_pattern . La notación /{0,20/} es como * , pero especifica de cero a veinte repeticiones en lugar de cero o más. El -o dice que solo se muestre la coincidencia, en lugar de la línea completa.


grep -E -o ".{0,5}test_pattern.{0,5}" test.txt

Esto coincidirá con hasta 5 caracteres antes y después de su patrón. El modificador -o le dice a grep que solo muestre la coincidencia y -E para usar una expresión regular extendida. Asegúrese de poner las comillas alrededor de su expresión, de lo contrario podría ser interpretado por el intérprete de comandos.