Quiero comenzar grepping desde las líneas que tiene CKal 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/' inputSi 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 GNUgrepen macOS a través debrew install grepy usarggrepen su lugar.Alternativamente, puede usar el
pcregrepque admite patrones de varias líneas (-M).También puede usar el
excomando, por ejemplo:fuente