2017-02-10 5 views
0

Ich versuche, einige Dateien umzubenennen und brauche Hilfe beim Formatieren eines richtigen 'sed' Befehls;Das richtige Format eines 'sed' Befehls?

Ich habe eine Datei mit Filmepisoden, die so aussieht;

SG1_s10e8"Memento Mori" 
SG1_s10e9"Company of Thieves" 
SG1_s10e10"The Quest" 
SG1_s10e11"The Quest Part 2" 

und ich brauche die Episode # mit einem '0' wie dieses Pad;

SG1_s10e08"Memento Mori" 
SG1_s10e09"Company of Thieves" 
SG1_s10e10"The Quest" 
SG1_s10e11"The Quest Part 2" 

Ich bin sicher, sed ist das richtige Werkzeug, ich bin einfach nicht wirklich scharf mit der Befehlssyntax.

Ich würde jede Hilfe zu schätzen wissen.

Antwort

3
sed 's/e\([0-9]"[^"]*"\)/e0\1/' file 
+1

genial, danke! – Radamand

+0

Können Sie bitte erklären, was das 'e' in dem obigen Ausdruck tut? Ty – jes516

+1

@ jes516 haben einen Blick auf die Eingabedaten und die gewünschte Ausgabe und darüber nachdenken, warum das "e" wichtig ist. –

1

Sie könnte dies versuchen:

sed 's/e\([0-9]\)"/e0\1"/' 
+0

Nicht schlecht, aber es wäre für 'SG1_s10e08 "Memento More9"' beispielsweise fehlschlagen. –

+0

Nein, weil es nur das erste Vorkommen ersetzt; das würde mit dem g am ende passieren, wie in 's /// g', aber nicht mit 's //'. Recht? –

+0

Ich hatte zuerst das falsche Beispiel, habe jetzt meinen Kommentar mit dem richtigen Beispiel bearbeitet. Es tut uns leid. Was ich sage ist, wenn 'e [0-9]" 'NICHT in der erwarteten Position vor dem Beginn der doppelten Zeichenfolge in Anführungszeichen auftritt, sondern dann am Ende der Zeichenfolge auftritt, dann würde die Ersetzung an dieser falschen Stelle erfolgen –

Verwandte Themen