2012-11-06 16 views
14

Chcę znaleźć wszystkie wiersze w moim pliku tekstowym zawierające ciąg "abc", ale niezawierające ciągu "def". Czy mogę wykonać komendę grep, aby wykonać to zadanie?grep bez ciągu znaków

+1

Wygląda na to, że używasz grep, aby pomóc Ci poruszać się przez kod; jeśli tak, to ostatnio napisałem narzędzie, które znacznie ułatwia tę działalność: http://reviewboardstudents.wordpress.com/2012/10/22/ucosp-blog-post-sack-and-other-developer-shortcuts/ Mam nadzieję, że Pomoże ci też –

+0

Wspaniale, zobaczę! –

Odpowiedz

26

Każda z nich zrobi:

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

lub

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

Następujące będzie również zachować barwienia, jeśli tylko chcą zobaczyć wyjście na stdout:

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

TheOpcja(oznaczająca "dopasowanie odwrotne") nakazuje grep zignorować linie o określonym wzorcu - w tym przypadku def.

+0

Świetnie, dzięki! Kiedy mój plik_wejściowy jest duży, czy istnieje różnica w prędkości między pierwszym i drugim kodem? –

+1

@MikaH. Możesz dodać 'time' przed każdym poleceniem skryptu, aby zobaczyć, ile czasu zajmuje każdy z nich. Myślę, że jest tylko nieznaczna różnica. –

+0

Część o zachowaniu kolorystyki jest naprawdę przydatna. Dzięki jeszcze raz! –

1

To może zrobić.

fgrep "abc" file | grep -v "def" 
Powiązane problemy