- Mitglied seit
- 04. Jan 2012
- Beiträge
- 5.569
- Punkte für Reaktionen
- 1.397
- Punkte
- 234
Ich schreibe gerade ein Skript, dass nach einem individuellen Muster, dass in einer parallel zum Script abgelegten Konfiguration.txt abgelegt ist, Dateinamen (Fernsehsendungen von OTR) umbenennt.
Dazu 'zerhacke' ich zunächst den Originalnamen in die entsprechenden Teile und füge diese dann entsprechend dem Muster in der Konfiguration.txt aneinander.
Beispiel:
In der Variablen "NewName" aus der Konfiguration.txt steht eine Zeichenkette mit den Aliassen für die gewünschten Parameter. Der Wert von NewName für obiges Beispiel:
Diese Aliasse ersetze ich am Ende des Scripts mit Hilfe der entsprechenden Variablen mit den korrekten Werten mit Hilfe von sed.
Beispiel für die Dauer:
§dur ist hier der Alias für die Dauer in der Konfiguration.txt. Das § verwende ich vor den Aliassen, um zufällig gleichlautende Zeichenfolgen zu vermeiden (ich glaube, das § hat keine feste Bedeutung in der Shell … )
Frage 1:
Derzeit ist es so, dass $duration in obigen Code bei sed nicht als Variable sondern als Zeichenkette inkl. $ behandelt wird. Wie muss ich das ändern um §dur durch den Wert der Variablen $duration zu ersetzen?
Frage 2:
Ich bräuchte noch Hilfe, um den Sender zu separieren. Evtl. ausgehend von "TVOON" > die Zeichen zwischen dem 2 und 3. Unterstrich vor TVOON … (aber wie)?
EDIT:
Frage 1 konnte ich inzwischen doch noch beantworten:
Die sed-Parameter in doppelte Anführungszeichen und den Variablennamen in eine geschweifte Klammer.
EDIT 2:
Frage 2 ist jetzt auch beantwortet
Es ist doch immer so. Man sucht ewig, dann fragt man, und schließlich findet man doch noch die Antwort selber …
Zeichenkette mit rev umkehren und dann mit awk den 4 Bereich rauspicken
Dazu 'zerhacke' ich zunächst den Originalnamen in die entsprechenden Teile und füge diese dann entsprechend dem Muster in der Konfiguration.txt aneinander.
Beispiel:
Tagesschau_14.07.15_14-00_ard_10_TVOON_DE.mpg.HQ.avi
besteht aus Titel Jahr Monat Tag Stunde Minute Sender Dauer und ganz am Schluss der Qualität ("TVOON_DE.mpg" ist irrelevant, aber fester Bestandteil der Originalnamen).
und wird z.B. zu:
Tagesschau [2014-07-15 ARD] HQ.avi
besteht aus Titel Jahr Monat Tag Stunde Minute Sender Dauer und ganz am Schluss der Qualität ("TVOON_DE.mpg" ist irrelevant, aber fester Bestandteil der Originalnamen).
und wird z.B. zu:
Tagesschau [2014-07-15 ARD] HQ.avi
In der Variablen "NewName" aus der Konfiguration.txt steht eine Zeichenkette mit den Aliassen für die gewünschten Parameter. Der Wert von NewName für obiges Beispiel:
Rich (BBCode):
NewName="§tit [§ylong-§mon-§day §cha] §qua"
Diese Aliasse ersetze ich am Ende des Scripts mit Hilfe der entsprechenden Variablen mit den korrekten Werten mit Hilfe von sed.
Beispiel für die Dauer:
Rich (BBCode):
NewName=`echo $NewName | sed 's/§dur/$duration/g'`
Frage 1:
Derzeit ist es so, dass $duration in obigen Code bei sed nicht als Variable sondern als Zeichenkette inkl. $ behandelt wird. Wie muss ich das ändern um §dur durch den Wert der Variablen $duration zu ersetzen?
Frage 2:
Ich bräuchte noch Hilfe, um den Sender zu separieren. Evtl. ausgehend von "TVOON" > die Zeichen zwischen dem 2 und 3. Unterstrich vor TVOON … (aber wie)?
EDIT:
Frage 1 konnte ich inzwischen doch noch beantworten:
Rich (BBCode):
NewName=`echo $NewName | sed "s/§dur/${duration}/g"`
EDIT 2:
Frage 2 ist jetzt auch beantwortet
Es ist doch immer so. Man sucht ewig, dann fragt man, und schließlich findet man doch noch die Antwort selber …
Zeichenkette mit rev umkehren und dann mit awk den 4 Bereich rauspicken
Rich (BBCode):
Channel=$(echo "$filename" | rev | awk -F '_' '{print $4}' | tr [:lower:] [:upper:] | rev)
Zuletzt bearbeitet: