sed – det står still i min obefintliga hjärna… [LÖST]
Postat: 19 feb 2011, 22:40
Vad jag försöker göra är att dela upp ett befintligt datum i tre variabler. Följande kod fungerar utmärkt så länge datum är enligt ISO-8601, nämligen exempelvis 2011-02-19 för dagens datum:
Problemet är att datum i mina FLAC-filer ibland bara är ett årtaĺ, exempelvis ”2011”. Då får jag ”2011” för såväl Month som Day, så att "${Year}-${Month}-${Day}" blir "2011-2011-2011". Inte så snyggt, kanske…
Så vad jag skulle önska är att om inte hela uttrycket matchar så ska svaret bli en tom sträng, men jag har inte lyckats komma på hur man gör detta.
Visserligen kan jag lösa det ändå, men det är intressant att lära sig saker också.
Kod: Markera allt
RecordingDate=$(metaflac --show-tag=DATE ${SoundFile} | \
sed 's/DATE=//')
Year=$(echo $RecordingDate | sed 's/\(.*\)-.*-.*/\1/')
Month=$(echo $RecordingDate | sed 's/.*-\(.*\)-.*/\1/')
Day=$(echo $RecordingDate | sed 's/.*-.*-\(.*\)/\1/')
Så vad jag skulle önska är att om inte hela uttrycket matchar så ska svaret bli en tom sträng, men jag har inte lyckats komma på hur man gör detta.
Visserligen kan jag lösa det ändå, men det är intressant att lära sig saker också.