00으로 시작하는 줄을 제외한 모든 줄에서 개행을 공백으로 바꿉니다.

00으로 시작하는 줄을 제외한 모든 줄에서 개행을 공백으로 바꿉니다.

00:이와 같은 vtt 파일(자막)이 있는데 줄 및/또는 빈 줄로 시작하지 않는 줄에서만 새 줄을 공백으로 바꾸고 싶습니다 .

그래서 이거:

00:07:44,759 --> 00:07:49,072
Quando comincio a lavorare?
Subito.

00:07:49,199 --> 00:07:53,512
Prendi quella poltrona e portala
in laboratorio. Quella?

00:07:53,639 --> 00:07:58,839
Fai aftene'ione, mi raccomando.
lo vado in Comune. Arrivederci.

00:07:58,959 --> 00:08:01,952
Arrivederci.
Fate i bravi ragae'e'i.

다음으로 리디렉션됩니다.

00:07:44,759 --> 00:07:49,072
Quando comincio a lavorare? Subito.

00:07:49,199 --> 00:07:53,512
Prendi quella poltrona e portala in laboratorio. Quella?

00:07:53,639 --> 00:07:58,839
Fai aftene'ione, mi raccomando. lo vado in Comune. Arrivederci.

00:07:58,959 --> 00:08:01,952
Arrivederci. Fate i bravi ragae'e'i.

각 블록에는 한 줄 또는 두 줄의 자막이 있을 수 있습니다.

또는 포함으로 시작하는 sed줄을 무시하고 새 줄을 제거하려고 시도했지만 방법을 찾지 못했습니다.00:-->

나는 bash 스크립트를 작성하여 파일을 한 줄씩 읽고 적절한 조치를 취할 수 있다고 생각하지만 sed단 한 줄로도 가능하다고 확신합니다.

답변1

sed '/^$\|-->/!{
    N
    /\n$/!s/\n/ /
}' file
  • /^$\|-->/!행이 비어 있지도 않고 포함되어 있지도 않은 경우 -->;
  • N패턴 공간에 다음 줄을 추가합니다.
  • /\n$/!s/\n/ /추가된 줄이 비어 있지 않으면 줄 바꿈이 공백으로 대체됩니다.

입력 예(OP에서 표시할 수 있다고 언급한 대로 두 번째 블록에 한 줄 자막이 포함되어 있음):

00:07:49,199 --> 00:07:53,512
Prendi quella poltrona e portala
in laboratorio. Quella?

00:07:58,959 --> 00:08:01,952
Arrivederci.

00:07:58,959 --> 00:08:01,952
Arrivederci.
ABC.

산출:

00:07:49,199 --> 00:07:53,512
Prendi quella poltrona e portala in laboratorio. Quella?

00:07:58,959 --> 00:08:01,952
Arrivederci.

00:07:58,959 --> 00:08:01,952
Arrivederci. ABC.

참고: @binarysta가 댓글을 달았듯이 -->이는 동영상이 1시간 이상인 경우 제목을 감지하는 것보다 더 안정적입니다. 00:정말로 원한다면 00:첫 번째 정규식을 로 변경할 수 있습니다 /^$\|^00:/.

관련 정보