Quiero comenzar grepping desde las líneas que tiene CK
al final de la línea y dejar de grepping cuando la línea tieneD
al final. Lo intenté grep "$CK" "$D" file..txt
, pero no funcionó.
Entrada:
kkkkkkkkkkk
jjjjjjjjjjjjjjjjjj
gggggggggggg/CK
JHGHHHHHHHH
HJKHKKLKLLL
JNBHBHJKJJLKKL
JLKKKLLKJLKJ/D
GGGGGGGGGGGGGG
GGGGGGGGGGGGGG
La salida deseada:
gggggggggggg/CK
JHGHHHHHHHH
HJKHKKLKLLL
JNBHBHJKJJLKKL
JLKKKLLKJLKJ/D
text-processing
sed
awk
grep
Rana Khan
fuente
fuente
awk '/\/CK/,/\/D/' input
Si está utilizando BSD
grep
(no es compatible con perl regex param-P
), aquí está la solución:Esto funciona concatenando todas las líneas (reemplazando nuevas líneas con
_
caracteres), verificando el patrón de una línea y expandiendo las líneas a su estado original.Si está utilizando GNU
grep
, puede lograr una coincidencia multilíneagrep
, pero necesita usar perl-regexp paragrep
(-P
) como se menciona en otra respuesta . Todavía puede instalar GNUgrep
en macOS a través debrew install grep
y usarggrep
en su lugar.Alternativamente, puede usar el
pcregrep
que admite patrones de varias líneas (-M
).También puede usar el
ex
comando, por ejemplo:fuente