1 votos

¿Cómo convierto mi formato CSV en un archivo BAT automático "arrastrar y soltar"?

Yo produzco raw archivos EDL de Avid Media Composer, que es, básicamente, el texto que necesita volver a formatear en las columnas apropiadas por lo que es fácil de digerir para la persona que la recibe. Por razones de seguridad de las máquinas que utilizamos no tienen conexión a internet, así que estoy tratando de entender ¿cómo puedo lograr esto sin el uso de herramientas de terceros o sitios web de la red.

El Crudo .Archivo EDL cuando se abre en el Bloc de notas se parece a esto:

RAW EDL FILE

Es básicamente un resumen de los cortes utilizados en la línea de tiempo y una En la entrada/Salida de origen y de destino de los códigos de tiempo involucrados. El ejemplo anterior es muy pequeño en tamaño completo EDL puede tener hasta 1000 cortes (cada línea numerada de ser un corte).

Me las arreglé para dar formato a esto de forma manual con el uso de separadores de coma. He logrado esto mediante la adición de coma y de las citas por lo que se ve así:

FORMATTED FOR EXCEL

El resultado final, cuando la importación de esto en Excel es este:

RESULT IN EXCEL

También he estado tratando de explorar la idea de usar Powershell mediante Get-Content para tratar y analizar los datos que necesito en específico de filas/columnas, pero soy un completo novato en este campo, así que no estoy seguro de lo que estoy haciendo:

$Content = Get-Content "C:\TEST EDIT DECISION LIST.EDL"
$Content | Foreach {


If ($_ -match '[0-9]{1,6}$') 

Por lo que he podido Conseguir-leer el Contenido del archivo EDL y el texto dentro de la que se recupera bien. Luego traté de aplicar el match del operador para llegar a identificar los 6 dígitos numéricos (000001) y el objetivo es averiguar cómo enviar a la columna 1 fila 1 (pero no quiere correr). Entonces necesitamos para obtener el operador para identificar la siguiente entrada (GUIDE_VO), alfa-numérica-simbólica con un máximo de 32 caracteres de límite, etc, para respetar el formato que he creado manualmente por el resto de la línea. Necesitaría Powershell para aclarar y repetir este proceso a través de cada línea en el EDL y compilar un archivo CSV para mí.

Mi pregunta es, ¿cómo se podría ir sobre cómo obtener este archivo EDL para la salida a la CSV como por el formato manual que he hecho? Me gustaría hacer esto posible con un "arrastrar y soltar" archivo bat o similar de flujo de trabajo. Las entradas que aparecen en el raw edl son siempre en ese orden específico, con sólo los nombres de los clips y archivos de origen diferentes en lo que dicen a lo largo de todos los datos. Los números de entrada también gradualmente ir con toda la nueva línea de datos.

Esta es la materia prima de texto desde el Archivo EDL sí mismo:

TITLE:   Untitled Sequence.01
000001  GUIDE_VO                         A     C        12:36:54:21 12:37:06:19 01:00:00:00 01:00:11:23 
*FROM CLIP NAME:  SFX CLIP 1 
*SOURCE FILE: GUIDE VO
000002  HORROR.COPY.01.MP3               A     C        01:00:00:00 01:00:22:10 01:00:11:23 01:00:34:08 
*FROM CLIP NAME:  SFX CLIP 2 
*SOURCE FILE: HORROR.COPY.01.MP3
000003  93_HORROR_DRONE.MP3              A     C        01:00:04:15 01:00:08:08 01:00:34:08 01:00:38:01 
*FROM CLIP NAME:  SFX CLIP 3 
*SOURCE FILE: 93 HORROR DRONE.MP3

Muchas Gracias de Antemano por cualquier ayuda o sugerencias de esta maravillosa comunidad!

3voto

Toto Puntos 294
  • Ctrl+H
  • Qué buscar: ^(\S+)\h+(\S+)\h+(\S+)\h+(\S+)\h+(\S+)\h+(\S+)\h+(\S+)\h+(\S+)\h+\R\*FROM CLIP NAME:\h*(.+?)\h*\R.+
  • Reemplazar con: $1,$2,$4,$3,$5,$6,$7,$8,"$9"
  • compruebe Envoltura alrededor de
  • verificación de la expresión Regular
  • DESACTIVE . matches newline
  • Reemplazar todos

Explicación:

^               # beginning of line
    (\S+)\h+    # group 1, 1 or more non spaces, then 1 or more horizontal spaces
    (\S+)\h+    # group 2, idem
    ...         # idem until
    (\S+)\h+    # group 8
    \R          # any kind of linebreak
    \*          # asterisk
    FROM CLIP NAME:\h*  # literally FROM CLIP NAME: followed by 0 or more horizontal spaces
    (.+?)       # group 9, 1 or more any character but newline, not greeedy
    \h*         # 0 or more horizontal spaces
    \R          # any kind of linebreak
    .+          # 1 or more any character but newline

Reemplazo:

$1,                 # content of group 1 plus a comma
$2,                 # content of group 2 plus a comma
$4,$3,$5,$6,$7,$8,  # idem
"$9"                # content of group 9 surounded by double quote

El resultado para el ejemplo dado:

TITLE:   Untitled Sequence.01
000001,GUIDE_VO,C,A,12:36:54:21,12:37:06:19,01:00:00:00,01:00:11:23,"SFX CLIP 1"
000002,HORROR.COPY.01.MP3,C,A,01:00:00:00,01:00:22:10,01:00:11:23,01:00:34:08,"SFX CLIP 2"
000003,93_HORROR_DRONE.MP3,C,A,01:00:04:15,01:00:08:08,01:00:34:08,01:00:38:01,"SFX CLIP 3"

enter image description here

0voto

ouzmoutous Puntos 141

si tu fuente es

 000001  GUIDE_VO                         A     C        12:36:54:21 12:37:06:19 01:00:00:00 01:00:11:23
*FROM CLIP NAME:  SFX CLIP 1
*SOURCE FILE: GUIDE VO
000002  HORROR.COPY.01.MP3               A     C        01:00:00:00 01:00:22:10 01:00:11:23 01:00:34:08
*FROM CLIP NAME:  SFX CLIP 2
*SOURCE FILE: HORROR.COPY.01.MP3
000003  93_HORROR_DRONE.MP3              A     C        01:00:04:15 01:00:08:08 01:00:34:08 01:00:38:01
*FROM CLIP NAME:  SFX CLIP 3
*SOURCE FILE: 93 HORROR DRONE.MP3
 

usted podría aplicar

 mlr --skip-comments-with "*" --inidx --ifs ' ' --ocsv --repifs cat inputFile.txt
 

y tiene

 1,2,3,4,5,6,7,8
000001,GUIDE_VO,A,C,12:36:54:21,12:37:06:19,01:00:00:00,01:00:11:23
000002,HORROR.COPY.01.MP3,A,C,01:00:00:00,01:00:22:10,01:00:11:23,01:00:34:08
000003,93_HORROR_DRONE.MP3,A,C,01:00:04:15,01:00:08:08,01:00:34:08,01:00:38:01
 

mlr es una utilidad de código abierto, también funciona en Windows, y puede ejecutarla a través de un indicador. El último exe ganador está aquí (mlr.exe) https://github.com/johnkerl/miller/releases/tag/5.4.0

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: