Grep -v “grep” ne anlama geliyor ve ne yapıyor?


17

Ne grep -v "grep"anlama geldiğini ve ne anlama geldiğini merak ediyordum.


8
Şunları yapabilirsiniz man grepkomutu için veya belirli komutlar hakkında daha fazla bilgi (inc. Grep) yapabilirsiniz referans manuel sayfasını okumak için info grep.... yani. sisteminizde genellikle çok kullanışlı olan belgeler bulunur.
guiverc

12
grep -v "grep"süreçleri listelerken genellikle grep'i filtrelemek için kullanılır ve genellikle pgrepdaha az "sıhhi tesisat" a izin veren daha iyi yöntemler olmasına rağmen, genellikle 3 boru hattı içerir . Bkz. Unix.stackexchange.com/q/74185/85039
Sergiy Kolodyazhnyy

13
Bunu yapar. Kök setimi arıyorum grep.
Joshua

Normalde, ps aux | grep fubar | grep -v grepnerede fubargeliştirdiğim, yanıt vermeyi bırakan ve kimliğini bulmak istediğim kimliğini bulmak istediğim gibi güvenlikle ilgili olmayan bir bağlamda kullanılır . Bunlardan ikisinin olduğunu varsayalım, bu yüzden killalluygunsuz.
nigel222

Yanıtlar:


69

grep -v "grep"girişi satır satır alır ve yalnızca grepgörünmeyen satırları çıkarır. Olmadan -v, bu çıkış sadece çizgiler hangi olurdu grep gelmez görünür. Ayrıntılar man grepiçin bakınız.

Bildiğim kadarıyla grepyarar kendisi söz konusu olduğunda, desen o en önemsiz olduğunu grepbir argüman olarak kendisine geçirilen onun adıyla aynıdır. Ancak grep -v grepgerçekte ortaya çıkan çoğu durumda , bu bir tesadüf değildir.

grep -v grep(veya grep -v 'grep'veya grep -v "grep") genellikle sol tarafı bir komut olan bir borunun sağ tarafında görünür ps. Muhtemelen gördüğünüz yer burasıdır. Örneğin, adları, yolları veya komut satırı bağımsız değişkenleri Xfce ile ilişkili olduklarını öneren programları çalıştırabilirim:

ek@Io:~$ ps x | grep xfce
 2955 ?        Ssl    0:10 xfce4-power-manager
 2958 ?        S      0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
31901 pts/1    S+     0:00 grep --color=auto xfce

Komutum grepçıktıda gösterildi, ama aradığım şey bu değil. Ben, çalışan ne sadece çalışıyor değil süreci incelendiğinde zaten çalışmakta olan süreçler hakkında bilgi arıyorum çünkü çalışan ne incelemek için benim çaba.

Bu dikkat dağıtıcı öğeyi kaldırmanın yaygın bir yolu, başka bir boru eklemektir grep -v grep:

ek@Io:~$ ps x | grep xfce | grep -v grep
 2955 ?        Ssl    0:10 xfce4-power-manager
 2958 ?        S      0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd

grepolmadan -Fdesenine sabit bir dize yerine normal bir ifade gibi davranır . Bu yüzden başka bir yaklaşım, tam olarak eşleşen ancak farklı yazılmış düzenli bir ifade yazmaktır . Örneğin:xfce

ek@Io:~$ ps x | grep '[x]fce'
 2955 ?        Ssl    0:10 xfce4-power-manager
 2958 ?        S      0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd

Çünkü bu harfle tam olarak eşleşen [x]bir karakter sınıfıdırx .


Bu popüler yöntemlerin bir eksikliği, kendiniz çalıştırdığınız komut grepolmasa bile içeren satırları filtreleyecek olmalarıdır grep. Hatta olmayabilir grepadları, yollar veya komut satırı argümanları sadece komutlar - içerirler grep . Yani, Sergiy Kolodyazhnyy'nin belirttiği gibi , çoğu zaman bu yollardan hiçbiri (ya da çıktının borulanmasını içeren başka bir yaklaşım ps) gerçekten idealdir ve Nic Hartley'nin belirttiği gibi , diğer yollar sıklıkla kullanır pgrep. Örneğin:

ek@Io:~$ pgrep -af xfce
2955 xfce4-power-manager
2958 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
  • -a Komut satırının tamamını gösterir . Yalnızca işlem kimlik numarasını göstermeyi unutmayın.
  • -f tam komut satırında arama yapar . Yalnızca adları aramak için atlayın.

10
pgrepBaşka bir alternatif için de söz etmek gerekebilirps | grep
Fon Monica'nın Davası

8

grep --helpBize -vbayrağın ne yaptığını söyler :

-v, --invert-match        select non-matching lines

-vEşleşmeyi ters çevirmek için bayrak kullanabilirsiniz ; yani, yalnızca verilen kelimeyi içermeyen satırlarla eşleşir. Örneğin, kelime çubuğu içermeyen tüm satırları yazdırın:

$ grep -v bar /path/to/file

( devamını oku ... )

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.