2016-07-25 16 views
0

Ich versuche, den gefundenen Timecode von einem Format in ein anderes zu ändern, im Grunde um die Millisekunden am Ende einer Datei zu entfernen und zu aktualisieren. Dies dient dazu, zusätzliche Millisekunden aus einer Transkriptions-Timecode-Software zu entfernen und sie für die Datei für den Client hübsch aussehen zu lassen.Mit grep Timecode anpassen

Eingabe sieht wie folgt aus:

00:50:34.00>INTERVIEWER 
Why was it ............... script? 

00:50:35.13>JOHN DOE 
Because of the quality. 

Also den Timecode Ich versuche grep zu verwenden anzupassen, habe es die Arbeit mit Expression nach.

grep [0-9][0-9][:][0-9][0-9][:][0-9][0-9]\.[0-9][0-9] -P -o transcriptionFile.txt 

Ausgabe sieht wie folgt aus:

00:50:34.00 
00:50:35.13 

So, jetzt versuche ich Timecode zu nehmen und die Datei mit aktualisierten Werten aktualisieren:

00:50:34 
00:50:35 

Wie kann ich das tun? Sollte ich eine Pipe verwenden, um sie zu sed zu schieben, damit ich die Werte in der Datei aktualisieren kann?

Ich habe auch versucht, mit folgendem Befehl sed zu verwenden:

sed 's/[0-9][0-9][:][0-9][0-9][:][0-9][0-9]\.[0-9][0-9]/[0-9][0-9][:][0-9][0-9][:][0-9][0-9]/g' transcriptionFile.txt > outtranscriptionFile.txt 

I-Ausgang erhalten, aber bringe in meinen RegExp in Ort, an dem Timecode sein soll. Irgendwelche Ideen? Wie kann ich die letzten drei Ziffern vor der rechten Seite des Timecodes abschneiden, bevor ich die Datei aktualisiere?

Alle Tipps oder Vorschläge werden sehr geschätzt.

Danke :-)

+0

[Bearbeiten] Ihre Frage, um die erwartete Ausgabe für diesen Eingang enthalten. Wir können nicht sicher sagen, was Sie tun möchten, indem Sie ein Skript lesen, das nicht das tut, was Sie wollen. –

+0

Wie immer hängt viel davon ab, was sonst noch in der Datei ist. Vielleicht ist 'sed'/\. [0-9] [0-9]> />/g'' ausreichend. –

Antwort

1

Mit GNU sed:

sed -r -i 's/^([0-9]{2}:[0-9]{2}:[0-9]{2})\>\.[0-9]{2}/\1/' transcriptionFile.txt 

Erläuterung:

$ sed -r 's/^([0-9]{2}:[0-9]{2}:[0-9]{2})\>\.[0-9]{2}/\1/' transcriptionFile.txt 

00:50:34>INTERVIEWER 
Why was it ............... script? 

00:50:35>JOHN DOE 
Because of the quality. 

Um die Datei anstelle, fügen Sie die Option -i zu bearbeiten

  • [0-9]{2}: entspricht jeder zwei Ziffern gefolgt von einem :. Alle drei Ereignisse werden mit Klammern erfasst.
  • \>\.[0-9]{2} entspricht > gefolgt von einem Punkt und zwei Ziffern.
  • Mit Backreference \1 werden Zeichenfolgen, die mit dem vorherigen Muster übereinstimmen, durch erfasste Zeichen ersetzt (Zeitcode ohne Millisekunden).
+0

Geändert von der Verwendung von Kali Linux zu Ubuntu Linux und jetzt Skript läuft GNU sed Stil und funktioniert :-) Danke für reduzierte Syntax in [0-9] {2} Syntax machen lesbarer und mit Rückverweis auch gute Tipp. – EgoDust

+0

@EgoDust Gern geschehen! – SLePort