Я использовал ниже 2 метода для достижения указанного результата
метод1 с использованием функции awk gsub
echo $date1| awk '{gsub(":","-",$1);print $0}'
выход2018-01-16 12:25:35
Method2 с использованием sed
echo $date1 |sed "s/:/-/"| sed "s/:/-/"
выход2018-01-16 12:25:35
Method3 с использованием perl
echo $date1| perl -pne "s/:/-/"| perl -pne "s/:/-/"
выход2018-01-16 12:25:35
Выражения подстановки в sed
поддерживают числовой флаг. Вот как это может сделать GNU sed
:
sed 's/:/-/g;s/-/:/3g'
Так что здесь происходит? Это выражение состоит из двух частей, разделенных ;
. Вот они:
Как правило, это бесполезно в тех случаях, когда ваша исходная строка содержит дефисы или двоеточия, которые могут мешать, но это работает в вашем примере строки даты -.
Тем не менее, мне интересно, получаете ли вы дату в формате двоеточия -из exiftool
, потому что я видел это как формат даты по умолчанию. С помощью exiftool
вы можете просто указать другой формат даты :
exiftool -d '%Y-%m-%d %H:%M:%S' some-input-file.jpg
sed
модификатора g и числа Note: the POSIX standard does not specify what should happen when you mix the g and number modifiers, and currently there is no widely agreed upon meaning across sed implementations. For GNU sed, the interaction is defined to be: ignore matches before the numberth, and then match and replace all matches from the numberth on. [source]
#!/usr/bin/python
date1="2018:01:16 12:25:35"
bo=date1.split(" ")
jk=bo[0].replace(":","-")
print jk+" "+bo[1]
выход
2018-01-16 12:25:35