vtt files look like this:
WEBVTT
1
00:00:00.096 --> 00:00:05.047
you're the four functions if you would of
management first of all you have the planning
2
00:00:06.002 --> 00:00:10.079
the planning stages basically you were choosing appropriate
organizational goals and courses
3
00:00:11.018 --> 00:00:13.003
action to best achieve those goals
I need just the text, like this:
you're the four functions if you would of management first of all you have the planning the planning stages basically you were choosing appropriate organizational goals and courses action to best achieve those goals
on ubuntu I tried:
cat file.vtt | grep -v [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9][[:space:]][[:punct:]][[:punct:]][[:punct:]][[:space:]][0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]
that gives me:
WEBVTT
1
you're the four functions if you would of
management first of all you have the planning
2
the planning stages basically you were choosing appropriate
organizational goals and courses
3
action to best achieve those goals
but I can't figure out how to do the rest. what I want to replace is
\n[0-9]+\n\n
with space but I can't figure out how to make sed or grep do that.
how do I get with basic / portable (eg generally preinstalled in ubuntu, centos, etc, eg grep, sed, or tr command) to just the raw text with the subtitle timing removed, and all in one line (no newlines)?
NOTE: this has to work for other language characters like chinese hindi arabic, so preferably no [a-z] type matches but instead remove the timing lines which are very consistent in format. Also don't blindly remove any numbers as text can contain numbers
NOTE 2: ultimate goal is to have the text safe for a json value , so all special chars removed and double quotes escaped, but that's sort of beyond the scope of this question
awk -vRS= -vORS= -F'\n' '{for (i=3;i<=NF;i++) print $i}' file.vtt
user@ubuntu$ were anning
it's so weird. I reopened my terminal. other commands are fine though.dos2unix
, vi'sset ff=unix
, etc. etc). Probably I'd usesed
e.g.sed 's/\r$//' file.vtt | awk -vRS= -vORS= -F'\n' '{for (i=3;i<=NF;i++) print $i} END {print "\n"}'
(the finalprint
statement is only to make it look nice in the terminal - you don't need it if you're capturing the text to a variable for example).