如何将我的 CSV 格式转换为自动“拖放” BAT 文件?

如何将我的 CSV 格式转换为自动“拖放” BAT 文件?

我正在从 Avid Media Composer 输出原始 EDL 文件,这些文件本质上只是需要重新格式化为适当列的文本,以便接收者可以轻松理解。出于安全原因,我们使用的机器没有互联网连接,所以我试图了解如何在不使用第三方工具或互联网网站的情况下实现这一点。

在记事本中打开的 Raw .EDL 文件如下所示:

原始 EDL 文件

它基本上只是时间线上使用的剪辑的摘要以及所涉及的输入/输出源和目标时间代码。上面的示例非常小,因为完整的 EDL 最多可以有 1000 个剪辑(每个编号的行都是一个剪辑)。

我设法使用逗号分隔符手动格式化了它。我通过添加逗号和引号实现了这一点,因此它看起来像这样:

格式化为 Excel

将其导入 Excel 的最终结果如下:

Excel 中的结果

我也一直在尝试探索使用 Powershell 的想法,尝试Get-Content将我需要的数据解析为特定的行/列,但我是这个领域的完全新手,所以我不确定我在做什么:

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


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

因此,我设法让 Get-Content 读取 EDL 文件,并且可以正常检索其中的文本。然后,我尝试应用运算match符来识别 6 位数字(000001),目标是弄清楚如何将其发送到第 1 列第 1 行(但它不想运行)。然后,我需要让运算符识别下一个条目(GUIDE_VO),该条目将是字母数字符号,最多 32 个字符限制等,以便遵守我为其余行手动创建的格式。我需要 Powershell 冲洗并重复处理 EDL 中的每一行并为我编译一个 CSV。

我的问题是,我该如何让这个 EDL 文件按照手动格式化我做过什么?我想使用“拖放”bat 文件或类似的工作流程来实现这一点。出现在原始 edl总是按照特定的顺序,只有剪辑名称和源文件有所不同他们怎么说在所有数据中。条目数也会随着每一行新数据的增加而递增。

这是 EDL 文件本身的原始文本:

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

非常感谢这个令人惊叹的社区提供的任何帮助或建议!

答案1

  • Ctrl+H
  • 找什么:^(\S+)\h+(\S+)\h+(\S+)\h+(\S+)\h+(\S+)\h+(\S+)\h+(\S+)\h+(\S+)\h+\R\*FROM CLIP NAME:\h*(.+?)\h*\R.+
  • 用。。。来代替:$1,$2,$4,$3,$5,$6,$7,$8,"$9"
  • 检查环绕
  • 检查正则表达式
  • 取消选中. matches newline
  • Replace all

解释:

^               # 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

替代品:

$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

给定示例的结果:

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"

在此处输入图片描述

答案2

如果你的来源是

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

你可以申请

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

并且有

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 是一个开源实用程序,也适用于 Windows,您可以通过提示符运行它。最后一个 win exe 在这里 (mlr.exe)https://github.com/johnkerl/miller/releases/tag/5.4.0

相关内容