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.

各ブロックには1行または2行の字幕があります。

または、インクルードで始まるsed行を無視して新しい行を削除しようとしましたが、方法が見つかりませんでした。00:-->

私はbashスクリプトを書いてファイルを1行ずつ読み、適切なアクションを取ることができると思いますが、1行でも可能であると確信していますsed

ベストアンサー1

sed '/^$\|-->/!{
    N
    /\n$/!s/\n/ /
}' file
  • /^$\|-->/!行が空でも含まれていない場合-->
  • Nパターン空間に次の行を追加します。
  • /\n$/!s/\n/ /追加された行が空でない場合、改行は空白に置き換えられます。

入力例(OPで表示できると述べたように、2番目のブロックに1行の字幕が含まれています):

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:/

おすすめ記事