Czy istnieje narzędzie podobne do grep, które umożliwi mi wyszukiwanie grep przy użyciu operatorów logicznych. Chcę mieć możliwość swobodnego zagnieżdżania i łączenia konstrukcji logicznych. Na przykład takie rzeczy powinny być możliwe:
grep (term1 && term2) || (term1 && (term3 xor term4)) *
Zdaję sobie sprawę, że można to zrobić za pomocą waniliowego grepa i dodatkowego skryptu bash, ale moim celem tutaj jest unikanie tego.
-E
nie jest do końca równoważny z&&
uwagi na fakt, że jest wrażliwy na zamówieniagrep foo | grep bar
jest bardziej ogólnym sposobem na wykonanie AND.Możesz użyć perla:
źródło
Wierzę, że osiąga to, co próbujesz zrobić. To
d
eletes z wyjściem każdej linii, która nie pasujeterm1
, tob
Rancza z skryptu (a więc autoprints) każdej linii, która pozostaje i który pasujeterm2
, a na liniach, które pozostają usuwa dowolny które nie pasująterm3
, a każdy z tych, które są zgodneterm4
.sed
skrypty są oceniane w kolejności, a wszystkie testy mają wartość logiczną, więc wszelkie działania wynikające z testu będą miały bezpośredni wpływ na zachowanie kolejnych działań.źródło
Używam do łączenia
grep
poleceń w celu uzyskania logicznego AND:Uważam, że jest to dość proste, uniksowe i eleganckie.
Następnie możesz połączyć (jak dokładnie wyjaśniono @Tushi) z
-E
opcją OR-ing i-v
negacji.Twój konkretny przykład jest dość paskudny i prawdopodobnie skorzystałby z jakiegoś potężniejszego narzędzia (patrz odpowiedź @ muru).
źródło