başında başka bir dize olmayan grep


10

Grep kullanarak, örneklerini aramak John Smithancak hariç tutmak mümkün müdür Mr John Smith?

Yanıtlar:


9

Bu, negatif bakış açısına sahip düzenli bir ifade kullanılarak çözülebilir ( grepdüzenlemeden gelen yorumda belirtildiği gibi deneysel olarak desteklenir ):

$ grep -P '(?<!Mr )John Smith' file

Destek sadece deneysel olduğundan, perlbunun yerine kullanmak isteyebilirsiniz :

$ perl -nle 'print if /(?<!Mr )John Smith/' file

Deneysel olarak grep : 'de desteklenmektedir echo $string | grep -P '(?<!Mr )John Smith'.
düzenleme

@arrange Gerçekten. Teşekkürler, cevabı güncelleyeceğim.
jcollado

6

Sen yürütebilirsin

command | grep 'John Smith' | grep -v 'Mr John Smith'

1
Güzel fikir, ama çizgi varsa işe yaramazJohn Smith Mr John Smith John Smith
Ron

1

Normal ifadeleri kullanmak için ^ ve $ tuşlarını kullanın

grep "^John Smith$"

^ en baştan eşleşir $ en baştan eşleşir.

Sözdizimi, hangi dosyada aradığınıza bağlı olarak değişir.

Sed, grep, awk ile düzenli ifadeler kullanabilirsiniz ....

Misal

bodhi@Ubuntu:~ cat file
Mr John Smith
John Smith
John
Smith

bodhi@Ubuntu:~ grep "^John Smith$" file
John Smith

OP, dizginin satırındaki tek şey olmasını istemez.
enzotib
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.