Como seu arquivo parece consistir em uma sequência de registros separados por uma ou mais linhas em branco, sugiro tentar algo com base nos modos de parágrafo de awk
ou perl
.
Por exemplo, se você sempre precisar remover as duas primeiras linhas, como
1
00:00:00.096 --> 00:00:05.047
você pode dividir em campos delimitados por novas linhas em parágrafos separados em branco e ignorar os dois primeiros campos usando
awk -vRS= -vORS= -F'\n' '{for(j=3;j<=NF;j++) print $j; print " "}' file.vtt
ou
perl -F'\n' -00ne 'print join("", @F[2..$#F]), " "' file.vtt
Se você não puder contar com um número fixo de campos (linhas) a serem removidos, é bastante fácil adicionar um teste de expressão regular - um pouco mais fácil em perl
, já que isso nos permite grep
diretamente em matrizes, em vez de escrever um loop explícito. Por exemplo, para dividir em registros separados em branco e, em seguida, imprimir apenas os campos (linhas) com pelo menos uma seqüência de pelo menos 3 caracteres alfabéticos, você poderia usar
perl -F'\n' -00ane '
print join("", grep { /[[:alpha:]]{3}/ } @F), " "
' file.vtt
Se você quiser excluir a string WEBVTT
, basta pular o primeiro registro, ou seja,
perl -F'\n' -00ane '
print join("", grep { /[[:alpha:]]{3}/ } @F), " " if $. > 1
' file.vtt
Você terá que escolher um regex adequado que capture as linhas desejadas e exclua as indesejadas. Você pode adicionar um bloco END
em awk
ou perl
se quiser adicionar uma nova linha final à saída concatenada.
OBSERVAÇÃO: uma vez que (com base na discussão em comentários) seus arquivos parecem ter finais de linha CRLF
no estilo DOS, você precisará lidar com eles - modificando o campo e registrando os separadores nos comandos acima, ou retirando o CR
s primeiro eg
sed 's/\r$//' file.vtt |
perl -F'\n' -00ane '
print join("", grep { /[[:alpha:]]{3}/ } @F), " " if $. > 1
'
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 steeldriver@xenial-vm:~/test/$