2012-11-06 24 views
14

dizesini içeren metin dosyamdaki tüm satırları bulmak istiyorum, ancak "def" dizesini içermiyor. Bu görevi gerçekleştirmek için grep komutunu kullanabilir miyim?string olmadan grep

+1

Bir kod tabanı aracılığıyla yolunuzu bulmanıza yardımcı olmak için grep kullanıyorsunuz gibi görünüyor; öyleyse - bu aktiviteyi daha kolay hale getirmek için son zamanlarda bir araç yazdım: http://reviewboardstudents.wordpress.com/2012/10/22/ucosp-blog-post-sack-and-other-developer-shortcuts/ Umarım Sizin için de faydalı olacaksınız –

+0

Harika, bir göz atacağım! –

cevap

26

Bunların ikisi de böyle olacaktır:

grep -v "def" input_file | grep "abc" 

veya

grep "abc" input_file | grep -v "def" 
sadece stdout'ta çıkışını görmek istiyorsanız şu da boyama koruyacak

:

grep --color=always "abc" input_file | grep -v "def" 

-v seçeneği ("invert eşleşmesi") grep'a belirtilen deseni içeren satırları görmezden gelmesini söyler - bu durumda def.

+0

Harika, teşekkürler! Benim input_file büyük olduğunda, ilk ve ikinci kod arasında bir hız farkı var mı? –

+1

@MikaH. Her birinin ne kadar sürdüğünü görmek için her komut komutundan önce "time" ekleyebilirsiniz. Bence sadece ihmal edilebilir bir fark var. –

+0

Renklendirmeyi koruma ile ilgili kısım gerçekten faydalıdır. Tekrar teşekkürler! –

1

Bunu yapabilir.

fgrep "abc" file | grep -v "def"