Onko tähän yksinkertaisempi tapa? grep -v foo file | grep -v bar
Siellä on todennäköisesti erittäin tyylikkäitä tapoja tehdä se egrepillä, mutta miten mennä tavallisen vanhan grepin kanssa?
MUOKKAA: grep -v "foo\|bar" file
näyttää toimivan vain GNU grep: n kanssa. I ”m Solariksessa. Onko sinulla mitään ratkaisua siihen?
Kommentit
Vastaa
Sinulla voi olla useita testejä yksittäinen grep
-komento siirtämällä jokainen lauseke -e
-argumentilla ensimmäisenä ei-vaihtoehtoisena argumenttina, kuten normaalisti näet:
$ grep -v -e foo -e bar file
Se sanoo saman, mitä komentosi tekee: tulostaa rivejä file
, jotka eivät sisällä ”foo” eikä ”bar” .
Muista, että -v
poistaminen kääntää tämän kokonaan; se muuttaa myös loogista toimintaa! Saat kaikki rivit, jotka sisältävät ”foo” tai ”bar”.
Vastaa
grep -Ev "word1|word2"
pitäisi toimia hyvin.
Kommentit
- Vaihtoehtona voit käyttää egrepiä ja pudottaa putkimerkki:
egrep -v 'word1|word2
- On käynyt ilmi, että tämä ei toimi Solaris-grepin kanssa. Asensin GNU-grepin ja toimin täydellisesti. ' aion muokata kysymystäni Solaris-spesifiseksi.
- @rahmu
\|
on GNU-grep laajennus, mutta voit saavuttaa saman asian kannettavalla tavalla-E
ja|
-operaattorilla.
-v
-lippu on negatiivi.not(A or B) == not(A) and not(B)