Çı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.