Як перетворити формат CSV на автоматичний "перетягування" BAT-файлу?


1

Я виводити сирі файли EDL з Avid Media Composer, який, по суті, є лише текстом, який потребує повторного форматування у відповідні колонки, тому його легко перетравити для особи, яка її отримує. З міркувань безпеки машини, які ми використовуємо, не мають підключення до Інтернету, тому я намагаюся зрозуміти, як це можна досягти без використання інструментів третьої сторони або веб-сайтів з мережі.

Файл Raw .EDL, відкритий у Блокноті, виглядає так:

RAW EDL FILE

В основному це лише короткий виклад скорочень, використаних на часовій шкалі, а також кодів джерела вхідного та вихідного часу та часу призначення. Наведений вище приклад дуже малий за розміром, оскільки повна EDL може мати до 1000 розрізів (кожна пронумерована лінія є вирізом).

Мені вдалося відформатувати це вручну за допомогою роздільників комами. Цього я досягнув, додавши коми та котирування, так це виглядає так:

FORMATTED FOR EXCEL

Кінцевий результат при імпорті цього в Excel - це:

RESULT IN 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 оператор, щоб визначити ідентифікацію цифрового 000001 ), і мета полягає в тому, щоб з'ясувати, як відправити це до стовпця 1 рядка 1 (але вона не хоче запускати). Потім мені потрібно надати оператору ідентифікацію наступного запису ( GUIDE_VO ), які були б алфавітно-цифровими символами з максимальним обмеженням на 32 символи і т.д., щоб дотримуватися форматування, яке я створив вручну для решти рядка. Мені потрібно Powershell для полоскання і повторити процес це через кожну лінію в EDL і компілювати CSV для мене.

Моє питання, як я можу йти про отримання цього файлу EDL для виведення в CSV відповідно до ручне форматування Я закінчив? Я б хотів зробити це можливим за допомогою "перетягування" 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

Заздалегідь вдячні за будь-яку допомогу або пропозиції від цієї дивовижної спільноти!


Пакетне не найкращий інструмент для редагування текстових файлів. Вам потрібен інший інструмент. Чи можна отримати напр. Notepad ++?
Máté Juhász

У мене є Notepad ++ я просто зрозумів, ми могли б також автоматизувати рішення в пакетному сценарії все. Чи можна переформатування здійснено автоматично в Notepad ++ з легкістю? Я використовував команду Notepad ++ у пакетному сценарії раніше. Я припускаю, що ви думаєте про довгу команду рядка в функції пошуку і заміни?
Myles

Я також намагаюся вивчити синтаксичний аналіз кожного сегмента даних через "get-content" у PowerShell, але я дійсно не розумію багато чого з того, що я роблю
Myles

Відповіді:


3
  • 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"
  • перевірте Wrap around
  • перевірте Регулярний вираз
  • UNCHECK . matches newline
  • Замінити все

Пояснення:

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

enter image description here


Привіт Тото! Я тільки що дав йому та знайшов що вироблений правильний форматування для імпорту Excel. Мені потрібно, щоб перетворити це в пакетний скрипт перетягування, якщо це можливо. Я збираюся експериментувати з цим зараз і подивитися, якщо я можу змусити його працювати, і забрати його один раз я знову в офіс знову в понеділок. Мені також потрібно перевірити його з набагато більшим EDL, що містить ті ж записи даних, але набагато більше. Я дуже ціную всю допомогу. Щаслива п'ятниця до вас.
Myles

@ Myles: Ласкаво просимо, раді, що це допомагає. Гарних вихідних.
Toto

0

якщо ваш джерело

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, і ви можете запустити її за допомогою підказки. Останній виграш exe тут (mlr.exe) https://github.com/johnkerl/miller/releases/tag/5.4.0


1
Привіт aborruso, це команда виведення точний результат ви перераховані нижче? Мені цікаво дізнатися, як це зрозуміти, що робити з даними, якщо так. Я помітив, що ім'я кліпу виключено з результату, який мені знадобиться в останньому стовпці даних CSV. Дякуємо за всі ваші дані досі!
Myles

привіт @Myles у вас є багато файлів, і для кожного в першому рядку ви маєте щось на зразок "TITLE: Untitled Sequence.01", або у вас є один файл з великою кількістю заголовків? Якщо це один файл, чи можете ви поділитися реальним прикладом?
aborruso

Перший рядок - це лише назва часової шкали, і вона з'являється один раз при кожному експорті. це ніколи не повторюється. З рядка 2 далі однакові дані повторюються в одному стилі на кожні 3 рядки. Отже, мені знадобляться рядки 2,3 і 4, проаналізовані в першому рядку комірок, розділених на стовпці, які я показав на скріншоті. Але, дивлячись на результат, який ви створили у вашій відповіді, я бачу, що це зроблено. Все, що ще потрібно включити, - це назви кліпів "SFX CLIP 1" тощо
Myles

Я завжди можу отримати другий процес, який замінить 1,2,3,4,5,6,7,8 з іменами стовпців, які мені потрібні, так що це не повинно бути проблемою. Його тільки кліпи назви що також потребують зайти.
Myles

Якщо я не помиляюся, частина --skip-comments-with "*" пропускає весь запис *FROM CLIP NAME: SFX CLIP 1 це правильно? Отже, це пропускає ім'я кліпу SFX CLIP 1 як результат?
Myles
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.