Dizi karşılaştırması ile grep: sadece bir zaman damgasını "daha yüksek" olan satırları döndür


1

Bir e-posta çıktığında ve kime gideceğini kaydeden bir e-posta günlük dosyasına sahibim. Bu logrotated olur ve böylece bir hafta kadar geriye gidiyor sıkıştırılmış ve sıkıştırılmış kütük dosyalarının bir karışımı vardır.

Şu anda (başarıyla) belirli bir e-postayla eşleşen tüm satırları geri alıyorum

sudo find /var/log/exim4/ -type f -exec zgrep -i "foobar@gmail.com" "{}" \\; | sort

bu bana gönderilen tüm e-postaları geri veriyor foobar@gmail.com. Çok uzak çok iyi.

Şimdi yapmak istediğim şey almak herşey Alıcıya bakmaksızın belirli bir süre sonra gönderilen e-postalar. Bu basit olmalı (bence) çünkü tüm günlük dosyası satırları bir zaman damgası ile başlıyor - bu biçime sahipler:

2015-04-20 18:01:05 H=(fake.org) [180.108.175.57] F=<fake@fake.org> rejected RCPT <webmaster@charanga.com>: relay not permitted
2015-04-20 18:01:05 H=(fake.org) [180.108.175.57] F=<fake@fake.org> rejected RCPT <webmaster@charanga.com>: relay not permitted
2015-04-20 18:06:33 H=(bar.net) [111.176.77.1] F=<foo@bar.net> rejected RCPT <service@charanga.com>: relay not permitted

Öyleyse, "2015-04-20 18:03:00" sonrası tüm e-postaların gönderilmesini istediğimi varsayalım. Bu sadece benim zaman damgamı "daha büyük" olan tüm satırları almak durumunda olmalı. Bunun için komutumu nasıl değiştiririm? teşekkürler, Max

Yanıtlar:


2

Tarihler, kronolojik sıranın sözlü sıra ile aynı olduğu bir formatta olduğu için awk bunun gibi:

yourcommand | awk '$0 >= "2015-04-20 18:03:00"'

Çıktı yapacak:

2015-04-20 18:06:33 H=(bar.net) [111.176.77.1] F=<foo@bar.net> rejected RCPT <service@charanga.com>: relay not permitted
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.