grep,sedコマンドについて
昨日に引き続き、またまた質問です。
昨日回答してくださった方、ありがとうございました。
その後自分でも色々勉強しまして、ファイルの中身を処理するにはgrepコマンドとsedコマンドが
有効である事が分かりました。
今回やりたいことは以下のファイルの数字と時間の部分(//のついている2行)の削除です
//1
//00:00:03,600 --> 00:00:07,195
xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx
//2
//00:00:07,360 --> 00:00:09,635
xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx
・
・
(実際のファイルには"//"はついていません)
理想の出力
xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx
(xxxxxの部分には英語の台詞が入ります)
で、以下が自分が考えた方法です
1.sedコマンドのみで削除
$ sed "/[0-9]*\n[0-9][0-9].*/d" ファイル名
結果 ファイルの内容がすべて表示されるだけ (a)
2.grepコマンドで抽出しパイプ処理
まずgrepで削除部分を抽出
$ grep -P "^[0-9]*\n[0-9][0-9].*" ファイル名
結果 1
00:00:03,600 --> 00:00:07,195
2
00:00:07,360 --> 00:00:09,635
・
・
10
11
・
・
となり、1~9までの数字と時間はちゃんと表示され
10以降は数字しか出ません。 (b)
また -P の部分を -E にすると、何も表示されません (c)
(perlの正規表現と拡張正規表現の違いはここでは無いように思えますが・・・)
2は最初でつまづいたのでどのコマンドに渡して行を削除するかはまだ分かりません (d)
削除の際、2行まとめて行うのは、一行ずつ行うと、台詞の部分に数字のみが入っていた場合
削除されるのを防ぐためです
以上長くなりましたが(a)~(d)の質問、疑問に回答していただけると嬉しいです。
よろしくお願いします。
お礼
ありがとうございます! とても参考になりました!!