2016-05-19 3 views
2

How to format this "May 18, 2016 at 1:05:30 PM EDT" to +%Y-%m-%d 00:00:00Как форматировать следующие даты Баш/ш/оболочка

JayOSX:~ jay$ d=$(defaults read /Library/Preferences/com.someapp.some.plist LastUpdated)  

echo"$d "

##returns 
May 18, 2016 at 1:05:30 PM EDT 

I tried:

date -j -f "%b %d, %Y at %l:%M:S %Z" "$(defaults read /Library/Preferences/com.someapp.some.plist LastUpdated)” + "%Y-%m-%d 00:00:00" 

И я получил следующую ошибку:

Failed conversion of ``%d,'' using format ``“%b'' 
date: illegal time format 
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... 
      [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format] 
+0

Цитата в том, что вы пробовали, '' ', эти кавычки вы действительно использовали? Обратите внимание на разницу: yours: '' ', правильные цитаты:' '' –

+0

Спасибо за исправление. Я использовал правильные цитаты, когда я запустил ее в своей реальной среде. – jay

+0

@jay Вы отредактировали вопрос, чтобы сообщаемая ошибка больше не будет. У вас все еще есть проблема? – chepner

ответ

0

здесь вы идете,

создать inFile.txt:

echo "May 18, 2016 at 1:05:30 PM EDT" > infile 

сейчас у нас есть:

[za]$ cat infile.txt 
May 18, 2016 at 1:05:30 PM EDT 

Один вкладыш, который сделает это. FYI, "%s-%s-%s %s %s:%s:%s \n", $4 , $1 , $2 , $3 , $6 , $7 , $8 - это то, что переформатирует.

[za]$ awk -F'[ "\t" :,]' '{printf "%s-%s-%s %s %s:%s:%s \n", $4 , $1 , $2 , $3 , $6 , $7 , $8 }' infile.txt 

Выходы:

2016-May-18 1:05:30 

Быстрый тест.

echo May 18, 2016 at 1:05:30 PM EDT | awk -F'[ "\t" :,]' '{printf "%s-%s-%s %s %s:%s:%s \n", $4 , $1 , $2 , $3 , $6 , $7 , $8 }' 

Надеюсь, это поможет;).

+0

определенно помогает, но мне он нужен, чтобы быть «2016-05-18 00:00:00» – jay

+0

привет, на моем mac, он печатает «05», а не май d = $ (по умолчанию читается /Library/Preferences/com.someapp.some.plist LastUpdated) 2016-05-19 15: 19: 57.548 defaults [11384: 186690] ... так, проверьте, как вы можете сделать источник вне введите правильный формат. – zee