Oggi vedremo come manipolare un testo, e in particolare un file di sottotitoli… utilizzerò questo punto di partenza per introdurvi a due potentissimi strumenti tipici del mondo GNU/Linux (e Unix più in generale).

L’idea iniziale era di scrivere un unico articolo che trattasse regex, sed e awk tutti assieme! L’articolo stava però diventando mastodontico! Quindi qui dentro vi linkero gli articoli che introducono regexp, sed e awk!

Al momento in cui scrivo l’articolo sulle regular expression e su sed sono finiti e saranno quindi già linkati! Sto ancora lavorando sull’articolo di awk (più lungo e complesso) che arriverà presto, impegni permettendo…

Qui vi proporrò un esempio pratico che funge da “antipasto” per le prossime guide: un file dei sottotitoli “srt” non conforme allo standard “srt”, e quindi con dei difetti da sistemare…

Questi difetti sono 2(+1):

  1. ad ogni riga del file ne segue una vuota che vogliamo eliminare (il che significa voler eliminare tutte le righe pari del file)
  2. il formato tempo non è corretto, manca una virgola tra i secondi e i millesimi di secondo! Vogliamo aggiungerla automaticamente
  3. risincroniziamo il file dei sottotitoli con il video: questo non è un problema di conformità allo standard srt ne un problema che ho risolto con sed o awk; l’ho aggiungo per completezza al fine di mostrare come risincronizzare un file di sottotitoli desincronizzato con l’audio…

Partiamo da un testo fatto così:

Testo di partenza

e ne vogliamo uno così:

Risultato

Ovviamente ha poco senso per file così corti: immaginate di avere un file con migliaia di righe da sistemare! A mano diventa improponibile… ecco dove entrano in scena awk e sed.

Per il punto uno useremo “awk”, per il punto due “sed” e per il punto 3 “gaupol” (uno dei software per manipolare i sottotitoli che potete trovare in Linux) anche se non ci siano particolari vincoli (avremmo potuto fare tutto sia con sed che con awk)

(altro…)