Välkommen till linuxportalen.se!

Linuxportalen.se är Sveriges största och aktivaste webbplats för användare av öppen- och fri programvara.

Du besöker Linuxportalen.se som gäst vilket begränsar din möjlighet att använda webbplatsens alla funktioner. Genom att registera dig som medlem får du inte bara möjlighet att söka bland webbplatsens innehåll, skapa nya och delta i befintliga diskussioner, skapa din egen blogg, kommunicera med andra medlemmar genom privata meddelanden och delta i omröstningar. Du får också tillgång till Veckans Kadavro - en seriestrip unikt skapad för Linuxportalen.se!

Registeringen sker snabbt och är helt kostnadsfri - tveka inte, bli medlem idag!

Räkna med sed? Hur lägga till 11 sekunder till en textfil?

Jag ska lägga till en undertext till en film jag har.
Detta är i sig enkelt, man skapar en textfil "*.srt" i samma katalog som filmen, funkar utmärkt.
Problem:
Jag har filmen, jag har undertexten. Men texten kommer 11 sekunder för sent!
"Lätt fixat med 'sed' tänkte jag"...
Men hur i hela friden får jag 'sed' att räkna, dessutom inte decimalt utan med tid??
Eller är jag fel ute, finns det andra bättre sätt lösa detta?

Här är ett utdrag ur undertext-filen:
<code> pingu@edgar:~$ head -20 Documents/The\ Name\ of\ the\ Rose.srt
0
00:00:01,000 --> 00:00:04,000
Downloaded From www.AllSubs.org

1
00:00:21,720 --> 00:00:25,360
Having reached the end
of my poor sinner's life...

2
00:00:25,560 --> 00:00:27,680
my hair now white...

3
00:00:27,800 --> 00:00:30,760
I prepare to leave
on this parchment my testimony...

4
00:00:30,840 --> 00:00:33,360 </code>

Så under nr 1, första raden ska ändras från
00:00:21,720 --> 00:00:25,360
till
00:00:10,720 --> 00:00:14,360
... och likadant för varje textrad, blir några tusen..

Alternativ för kommentarvisning

Välj ditt önskade sätt att visa kommentarerna och klicka på "Spara" för att verkställa dina ändringar.

FoHs bild

Om du inte orkar lära dig sed så kan du testa Gnome Subtitles. Finns en Shift-funktion i det Smile

fredentofts bild

Så här kan du lägga till 11 sekunder till en känd tid:

~> date -d"00:10:50 11 seconds" "+%H:%M:%S"
00:11:01 

Eller beroende på hur det ser ut i övrigt kan man skicka tidsstämplarna genom awk:

#!/bin/bash
awk -F':' '
{
        orisec=($1*3600)+($2*60)+$3
        newsec=(orisec+11)
        print "sekunder: " newsec
        hrs=int(newsec/3600)
        print "timmar: " hrs
        min=int(newsec/60)%60
        print "minuter: " min
        sec=newsec%60
        print "sekunder: " sec
        printf("%02d:%02d:%02.3f", hrs , min , sec )
}'

-
För övrigt anser jag att trådindenteringen måste lagas
-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

pingus bild

Flera bra förslag, tackar! Problemet löst.  Smile

(Och jo, jag "orkar" lära mig men ibland måste man hitta en lösning på ett problem snabbt. Då är en fråga i ett forum ett utmärkt sätt som synes!)

----------------------------
In Pingvino veritas!

http://www.tuxit.se
http://blogg.skuttungecity.se