2016-11-18 19 views
0

ファイルが分割されていることがあります。sed:4行目に応じて行を結合します

スプリットは、アルファベット文字で2つの連続した行があることによって通知されます。

 

5 

00:00:00,000 --> 00:00:00,000 

Alphabetic characters 
Alphabetic characters 

6 

00:00:00,000 --> 00:00:00,000 

Alphabetic characters 

7 

00:00:00,000 --> 00:00:00,000 

Alphabetic characters 
Alphabetic characters 

8 

00:00:00,000 --> 00:00:00,000 

Alphabetic characters 

..... 

私は戻って、分割ラインに参加したいと思います:

 

5 

00:00:00,000 --> 00:00:00,000 

Alphabetic characters Alphabetic characters 

6 

00:00:00,000 --> 00:00:00,000 

Alphabetic characters 

7 

00:00:00,000 --> 00:00:00,000 

Alphabetic characters Alphabetic characters 

8 

> 00:00:00,000 --> 00:00:00,000 

Alphabetic characters Alphabetic characters 
..... 

をsedを使用します。私は先行するものと行を結び付ける方法が明確ではない。 提案がありますか?

+0

SRTファイルの場合、例と異なり、最後のテキスト行の後に(字幕インデックスの前に)空白行があります。 –

+0

有効な.SRTファイルの実際の形式が反映されていないため、質問を編集することができます。あなたの事例に基づいたソリューションは満足できるものではありません。 –

+0

行頭に4つの空白が付いています。 [edit-help](http://stackoverflow.com/editing-help)を見てください。 – Cyrus

答えて

1

sedは、個々の行で単純なサブ置換を行うことだけです。

$ awk '/[[:alpha:]]/{ if (buf=="") {buf=$0; next} else {$0=buf OFS $0; buf=""} } 1' file 

5 

00:00:00,000 --> 00:00:00,000 

Alphabetic characters Alphabetic characters 

6 

00:00:00,000 --> 00:00:00,000 


7 

00:00:00,000 --> 00:00:00,000 

Alphabetic characters Alphabetic characters 

8 

00:00:00,000 --> 00:00:00,000 

Alphabetic characters Alphabetic characters 

..... 

は、上記のすべてのPOSIX互換awksを持つすべてのUNIXシステム上で確実に、移植性、および効率的に動作します:他の何かのためには、awkのを使用する必要があります。

+0

ありがとう、私のためにうまくいく。 それは可能です、否定演算子ですか?// [[:数字:]]/'/ [^ [:数字:]] /'これはあなたが何を意味しているかに応じて、 はこのように - > "と等しくない[:数字]]" – Marcelo

+0

" 。 –

1
sed '$!{N;/^[a-zA-Z ][^\n]\+\n[a-zA-Z ]/{s/\n/ /}}' 

最初の行は、アルファベット文字またはスペースで始まり、第二は同じで始まるという条件を満たす二行背中合わせにマッチ。スペースでそれらを結合してください。

+0

ありがとう、私のためにうまくいく。 – Marcelo

1

別のアプローチでは、sedを:アルファベットで始まる行が見つかった場合

sed '/^[[:alpha:]]/{N;/\n[[:alpha:]]/s/\n/ /}' file 

Nコマンドを使用して、パターンスペースに次の行を追加します。その後、アルファベット文字の後にスペースを入れて改行を置き換えます。

+0

素晴らしい - 多くのありがとう。私のために本当にうまくいく。 – Marcelo

関連する問題