Çapraz dağıtım güvenli cevabı (windows minGW dahil?)
grep -h "[[:alpha:]]*th[[:alpha:]]*" 'filename' | tr ' ' '\n' | grep -h "[[:alpha:]]*th[[:alpha:]]*"
-O seçeneğini içermeyen grep'in eski sürümlerini (2.4.2 gibi) kullanıyorsanız. Yukarıdakileri kullanın. Başka aşağıdaki sürümü korumak için daha basit kullanın.
Linux çapraz dağıtım güvenli cevabı
grep -oh "[[:alpha:]]*th[[:alpha:]]*" 'filename'
Özetler için -oh
sadece o zaman aram hangi kelime veya düzenli ifade vim / etc iş ... için normal ifade beklenir nasıl gibi düzenli ifade dosya içeriğine maçları (ve dosya adını) verir, kadardır sen! Perl sözdiziminde değil, POSIX'te kaldığınız sürece (aşağıya bakın)
Grep kılavuzundan daha fazlası
-o Print each match, but only the match, not the entire line.
-h Never print filename headers (i.e. filenames) with output lines.
-w The expression is searched for as a word (as if surrounded by
`[[:<:]]' and `[[:>:]]';
Orijinal cevabın herkes için işe yaramamasının nedeni
Kullanımı \w
"perl" sözdizimi olarak platformdan platforma değişir. Bu nedenle, POSIX karakter sınıflarıyla çalışmak için sınırlı olan bu grep kurulumu [[:alpha:]]
perl eşdeğerini değil kullanır \w
. Daha fazla bilgi için normal ifade hakkındaki Wikipedia sayfasına bakın
Sonuç olarak, yukarıdaki POSIX cevabı, grep için platformdan (orijinal olan) bağımsız olarak çok daha güvenilir olacaktır
-O seçeneği olmayan grep desteğine gelince, ilk grep ilgili satırları çıkarır, tr boşlukları yeni satırlara böler, son grep filtreleri sadece ilgili satırlar için.
(PS: Şimdiye kadar çoğu platform biliyorum, \ w .... için yamalı olurdu ama her zaman geride kalanlar vardır)
@AdamRosenfield yanıtından "-o" geçici çözümü için kredi