Bir dosyadan sadece seçili sözcükleri nasıl elde edersiniz?


1

Bir dosyadaki tüm e-posta adreslerinin bir listesini almam gerekiyor.

Kullanmaya çalışıyordum

grep @ filename

ama bu bütün çizgiyi döndürür.

Yine de, tüm satırı değil, sadece e-posta adresini döndürmeyi öğrenebilir miyim?

Yanıtlar:


1

Bu dosyanın formatına bağlı olacaktır. Örneğin, dosya diyelim ki

email@example.com istemediğiniz şeyler
email2@example.com istemediğiniz daha fazla şey
email3@example.com ve daha fazlası

o awk '/@/{print $1}' zaman bariz cevap gibi görünüyor.

Sahip olduğunuz şey değilse, dosya formatına bir örnek gönderin.


Dosyanın, yarı rasgele oluşan bir e-posta adresi var.
null_radix

1

Herhangi bir geçerli e-posta adresini doğru şekilde eşleştirmenin derin bir sihir olduğunu unutmayın, bu nedenle yanlış pozitif veya negatif olmayan her şeyi gerçekten yakalamak istiyorsanız, başka birinin yazdığı bir regex kullanmanız gerekir. Ancak grep, Yeterince İyi olan bir hızlı arıyorsanız , yalnızca eşleşen metni -ogösteren seçeneğe göz atın .

$ grep -Po '\S+@\S+\.\w+' yourfile.txt

Bu, bazı basit e-posta adreslerini ve geçerli e-posta adresleri olmayan bazı şeyleri ("@@@@. A" gibi) yakalayacaktır. Regex'inizi uygun şekilde ayarlayın. Örneğin, bu daha kısıtlayıcı:

$ grep -Po '[\w+.]+@[\w.]+\.\w+' yourfile.txt

regexes gerçekten e-posta adreslerini işlemek için doğru araç değildir. Tam adres üzerindeki her potansiyel varyasyonu doğru olarak yapacak herhangi birinin farkında değilim. BNF özellikleri için, gerçekten bir çözümleyici kullanıyor olmalısınız.
goril,

0

@ rbright bu çözüm iş gibi görünüyor. "-o" seçeneği ne eksikti! Ama yanıtını almadan önce bir php betiği yazdım.

$ handle = fopen ("MYFILE.txt", "r");

if ($handle) {  
    while (!feof($handle)) {
        $buffer = fgets($handle);

        $pieces = explode(" ",  $buffer);
        foreach($pieces as $piece){
            if( strstr($piece, '@' && $piece != " ")){              
           echo $piece;             
            }
        }   
    }
 fclose($handle);
} 

Bu hızlı ve kirli ama durumumda çok düşük bir e-posta adresinde olmayan bir @ olana kadar bekletecek

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.