извлечение временного кода, разделенного шаблоном, и текста в строке после

#regex

#регулярное выражение

Вопрос:

Я хочу извлечь время начала и окончания и текст субтитров из заданного файла субтитров. Какой лучший способ сделать это? Файл субтитров выглядит следующим образом:

 1
00:00:14,680 --> 00:00:23,960
on

2
00:00:24,480 --> 00:00:30,000
VERT

3
00:00:30,080 --> 00:00:38,120
UD

4
00:00:38,120 --> 00:00:39,040
REST
 

Я хочу следующее:

 00:00:14.680 , 00:00:23.960, on
00:00:24.480 , 00:00:30.000, VERT
00:00:30.080 , 00:00:38.120, UD
00:00:38.120 , 00:00:39.040, REST
 

После некоторого поиска в Google я могу извлечь регулярное выражение в режиме онлайн следующим образом, как показано на рисунке. Как мне поместить извлеченный текст в файл (и заменить , на . ?

 (d.{11})s-->s(d.{11})[rn](w )
 

введите описание изображения здесь

Обновление: получил то, что я хочу, следующим образом. Есть ли какой-либо способ добавить, чтобы заменить, with .?

 gawk 'match($0, /([0-9].{11})s-->s([0-9].{11})/, a) {getline; print a[1], "t", a[2],"t", $0}' 
 

Ответ №1:

Это работает с использованием grep и perl:

 $ cat text.txt | egrep -v '^[0-9]*

  • egrep удаляет пустые строки и только цифры
  • несколько perl поисков и замен исправляют запятые на точки, исправляют --> стрелку на запятую и соединяют буксирные строки запятой

Комментарии:

1. Не знаю, почему он добавляется 1, в первую строку с реальным .srt файлом. Но ничего страшного, все остальное извлекается нормально.

2. Не уверен, почему. Я протестировал ваш пример ввода текста, и он работает правильно в моей системе

| perl -pe 's/(:d{2}),(d)/$1.$2/g; s/ *--> */, /; s/(d)n/$1, /g;'
00:00:14.680, 00:00:23.960, on
00:00:24.480, 00:00:30.000, VERT
00:00:30.080, 00:00:38.120, UD
00:00:38.120, 00:00:39.040, REST

  • egrep удаляет пустые строки и только цифры
  • несколько perl поисков и замен исправляют запятые на точки, исправляют --> стрелку на запятую и соединяют буксирные строки запятой

Комментарии:

1. Не знаю, почему он добавляется 1, в первую строку с реальным .srt файлом. Но ничего страшного, все остальное извлекается нормально.

2. Не уверен, почему. Я протестировал ваш пример ввода текста, и он работает правильно в моей системе