たとえば、次のようになります(例:.srtファイルから)。
231
00:13:35,230 --> 00:13:37,120
- Oh, my sister got me into it.
232
00:13:37,129 --> 00:13:38,269
- Yeah?
233
00:13:37,129 --> 00:13:38,269
Is that her?
234
00:13:40,049 --> 00:13:41,090
- Yeah.
線が00:13:37,129 --> 00:13:38,269
2回現れて2つの部分をつなげたいです。したがって、次のように動作する必要があります。
- " --> "を含むすべての行を確認してください。
- 前の結果と一致する場合は、この行と上記の2行を削除してください。
結果は次のとおりです。
231
00:13:35,230 --> 00:13:37,120
- Oh, my sister got me into it.
232
00:13:37,129 --> 00:13:38,269
- Yeah?
Is that her?
234
00:13:40,049 --> 00:13:41,090
- Yeah.
これは私のsed
能力をはるかに超えたことです。内部バッファとパターン空間で動作できますか?まあ、私もこの問題をどのように解決するのかわかりません...
ベストアンサー1
これを行うには、awkを使用します。
$ cat tst.awk
(!NF) { # blank line
b = ""; f = 1 # empty buffer, start buffering
}
/-->/ { # timestamp
f = 0 # stop buffering
if (p == $0) { # same timestamp
next # discard buffer, start over
}
p = $0 # save timestamp
printf "%s", b # print buffer
}
f { # buffering enabled
b = (b $0 ORS) # buffer line
next # start over
}
1 # print line
出力:
$ awk -f tst.awk file
231
00:13:35,230 --> 00:13:37,120
- Oh, my sister got me into it.
232
00:13:37,129 --> 00:13:38,269
- Yeah?
Is that her?
234
00:13:40,049 --> 00:13:41,090
- Yeah.