Bash: Regex para SVN Conflicts

Así que estoy tratando de escribir una expresión regular para usar para un command grep en un command de estado SVN. Solo quiero que se muestren los files con conflictos, y si se trata de un conflicto de tree, la información adicional que SVN proporciona al respecto (que está en una línea con un carácter).

Entonces, aquí está mi descripción de cómo SVN genera líneas con conflictos, y luego mostraré mi expresión regular:

[Single Char Code][Spaces][Letter "C"][Space]Filename [Spaces][Letter "C"][Space]Filename [Letter "C"][Space]Filename 

Esto es lo que tengo hasta ahora para intentar get la expresión regular adecuada. La segunda parte, después de la condición OR, funciona bien para get el conflicto de tree línea adicional. Es la primera parte, donde trato de get líneas con la letra C en condiciones muy específicas.

De todos modos, no soy exactamente el mejor con Regex, así que algo de ayuda aquí (más una explicación de lo que estoy haciendo mal, para que pueda aprender de esto) sería genial.

 CONFLICTS=($(svn status | grep "^(.)*C\s\|>")) 

Gracias.

Esta expresión regular debe coincidir con tus líneas:

 CONFLICTS=$(svn status | grep '^[ADMRCXI?!~ ]\? *C') 
  • ^[ADMRCXI?!~ ]\? : líneas que comienzan con cero o una \? carácter de estado ^[ADMRCXI?!~ ]
  • * cero o más espacios
  • personaje C

Eliminé el paréntesis adicional que rodea la sustitución del command.

Debes leer la descripción de la salida de svn st más profundamente y tratar de get al less un conflicto de tree.

Comenzaré por ti:

 > The first seven columns in the output are each one character wide: >... > Seventh column: Whether the item is the victim of a tree conflict >... > 'C' tree-Conflicted 

y nota: teóricamente cualquiera de estas 7 columnas puede no estar vacía

estado de conflicto de tree

  M wc/bar.c ! C wc/qaz.c > local missing, incoming edit upon update D wc/qax.c 

Dirty perezoso borrador de expresiones regulares

 ^[enumerate_all_chars_here]{6}C\s