Как манипулировать текстом через утилиты командной строки: grep, cut, awk, sed или BBEdit (опция поиска Grep) - PullRequest
2 голосов
/ 12 марта 2020

Я борюсь с файлом SRT. У меня есть очень длинный файл субтитров, и я хотел бы автоматически получать текст заголовка только в одну строку вместо двух (или худших) трех разных строк, как в исходном файле. Я перепробовал многие решения, решил использовать BBEdit и через Grep Find Option найти решение моей проблемы, но, как я уже сказал, я застрял!

Здесь я представляю вам краткий пример моей проблемы :

Оригинал

1
00:00:00,600 --> 00:00:03,760
Block 1 - line one
Block 1 - line one

2
00:00:03,960 --> 00:00:07,120
Block 2 - line one
Block 2 - line two
Block 2 - line three

Что я хочу:

1
00:00:00,600 --> 00:00:03,760
Block 1 - line one Block 1 - line one

2
00:00:03,960 --> 00:00:07,120
Block 2 - line 1 Block 2 - line two Block 2 - line three

На самом деле, если вы найдете решение с другой программой, я буду также счастлив!

Заранее спасибо!

1 Ответ

0 голосов
/ 01 апреля 2020
$ gawk '
>     /Block/ { block = block sep $0; sep = " " }
>     !/Block/ { if (block != "") {
>                    print block
>                    block = sep = "" }
>                print $0 }
>     END { if (block != "") print block }
> ' << EOF
> 1
> 00:00:00,600 --> 00:00:03,760
> Block 1 - line one
> Block 1 - line one
>
> 2
> 00:00:03,960 --> 00:00:07,120
> Block 2 - line one
> Block 2 - line two
> Block 2 - line three
> EOF
1
00:00:00,600 --> 00:00:03,760
Block 1 - line one Block 1 - line one

2
00:00:03,960 --> 00:00:07,120
Block 2 - line one Block 2 - line two Block 2 - line three
...