Çıktıyı -d “değerine” nasıl bağlarım?


15

"2014-01-30 05:04:27 GMT" gibi bir tarihim var ve -d "2014-01-30 05:04:27 GMT" tarihini çalıştırırsam, çıktı sunucumun saat diliminde ("Per 30 Ocak 16:04:27 EST 2014 ").

Grep ve cut kullanarak, GMT'de tarihi bir dosyadan çıkardım. Ancak, bunu yerel saatime dönüştürmek için uğraşıyorum.

Örneğin:

[kullanıcı @ sunucu günlüğü] # grep "bir şey" logfile.txt | grep "Başarılı" | kes -f1 -d '['

Çıktı: 2014-01-30 05:04:27 GMT

Sonunda "date -d" dosyasına iletmek için ne ekleyebilirim?

Denenen:

  • [kullanıcı @ sunucu günlüğü] # grep "bir şey" logfile.txt | grep "Başarılı" | kesim -f1 -d '[' | tarih -d
  • [kullanıcı @ sunucu günlüğü] # grep "bir şey" logfile.txt | grep "Başarılı" | kesim -f1 -d '[' | tarih
  • [kullanıcı @ sunucu günlüğü] # grep "bir şey" logfile.txt | grep "Başarılı" | kesim -f1 -d '[' | tarih -d "$ 1"

Yanıtlar:


13
gmt="$(grep "something" logfile.txt | grep "Succeeded" | cut -f1 -d'[')"
date -d "$gmt"

Veya, boru hattı biçimini tercih ederseniz:

grep "something" logfile.txt | grep "Succeeded" | cut -f1 -d'[' | { read gmt ; date -d "$gmt" ; }

Sorun şu ki datestdin kullanmıyor. Bu nedenle, stdin'i ( gmtburada çağrılır ) bir değişkene yakalamak ve bunu komut satırına sağlamak zorundayız date.

İkinci yaklaşımdan örnek çıktı:

$ echo  "2014-01-30 05:04:27 GMT" | { read gmt ; date -d "$gmt" ; }
Wed Jan 29 21:04:27 PST 2014

1
Teşekkür ederim, bu sorunu çözdü! Ayrıca, neden işe yaramadığını açıkladığınız için teşekkür ederiz.
Shane

20

GNU tarihini yeterince yeni bir çekirdek dosyadan kullanıyorsanız, date -fyardım ekranından:

-f, --file=DATEFILE       like --date once for each line of DATEFILE

Yani 4. denemeniz şöyle olabilirdi:

$ grep "something" logfile.txt | grep "Succeeded" | cut -f1 -d'[' | date -f -

sonuncusu -stdin.


2
Bu kabul edilen cevap olmalı.
Petrus K.

Yukarıdaki komutun çıktısını belirli bir tarihle karşılaştırmak mümkün mü? Örneğin. "Çar 30 Ocak 21:04:27 PST 2014" ten daha eski olan tüm tarihleri ​​listelemem gerekiyor
Manu

@Manu değil kendi başına, dateutils sahip dategrepbu özel kullanımlar için.
hroptatyr

Bu çok daha kolay! Keşke okuyabilseydim bunu adam sayfasında bulabilirdim.
Ken Sharp
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.