Expresión Regular para encontrar la última línea de una tarjeta de trabajo JCL o toda la tarjeta.
Si alguno de ustedes está familiarizado con JCL en mainframe.
Estoy tratando de encontrar la última línea de la tarjeta de trabajo.
Básicamente, la primera línea que comienza con //
y termina sin una coma.
En el ejemplo, necesito que se encuentre la tercera línea o hasta la tercera línea.
Estoy usando lineinfile
de Ansible para insertar dinámicamente una tarjeta de ruta después de la tarjeta de trabajo.
Por ejemplo:
//SPOOL1 JOB (UU999999999,1103),'Programmer',CLASS=0, <--- comienzo de la tarjeta de trabajo
// REGION=0M,MSGCLASS=R,TIME=5, LINES=(999999,WARNING),
// NOTIFY=&SYSUID <--- fin de la tarjeta de trabajo
//STEPNAME EXEC PGM=BPXBATCH
//STDERR DD SYSOUT=*
//STDOUT DD SYSOUT=*
//STDPARM DD *
SH cat /dev/urandom
Hasta ahora tengo esto, que encuentra el comienzo de //
y cualquier cosa después, pero no puedo resolver la última parte:
^(\Q//\E(.)*)
davy.ai
Para coincidir con la última línea de la tarjeta de trabajo en Mainframe JCL, puedes utilizar el siguiente patrón regex:
Este patrón coincide con las líneas que comienzan con
//
y terminan sin una coma. Los anclajes^
y$
aseguran que toda la línea sea coincidente. La parte[^,]*
coincide con cualquier carácter excepto comas.Puedes utilizar este patrón con el módulo
lineinfile
de Ansible de la siguiente manera:Esto insertará la tarjeta
//ROUTE
después de la última línea de la tarjeta de trabajo. Ten en cuenta que el parámetroinsertafter
recibe un patrón regex para especificar la línea después de la cual se debe insertar la nueva línea.