Zapisuj wyniki grep do pliku tekstowego, potrzebujesz czystszego wyniku

84

W jaki sposób mogę zrzucić wyniki do pliku tekstowego podczas używania polecenia Grep do znalezienia ciągu wyszukiwania w zestawie plików?

Czy istnieje również przełącznik dla polecenia Grep, który zapewnia czystsze wyniki dla lepszej czytelności, takie jak zmiana wiersza między każdym wpisem lub sposób uzasadnienia nazw plików i wyników wyszukiwania?

Na przykład wyjazd do zmiany ...

./file/path: first result
./another/file/path: second result
./a/third/file/path/here: third result

do

./file/path: first result

./another/file/path: second result

./a/third/file/path/here: third result
user2398188
źródło
14
Uwielbiam to, że te naprawdę bardzo pomocne pytania, które nie są prawdziwym pytaniem, znalazły się na pierwszych miejscach wyników wyszukiwania w Google po latach.
Adrian Carr

Odpowiedzi:

112
grep -n "YOUR SEARCH STRING" * > output-file

-nDrukuje numer wiersza i >przekieruje grep-wyniki do plik-wyj.
Jeśli chcesz „wyczyścić” wyniki, możesz je przefiltrować, używając |na przykład potoku :
grep -n "test" * | grep -v "mytest" > output-file dopasuje wszystkie wiersze zawierające ciąg „test” z wyjątkiem wierszy pasujących do ciągu „mytest” (to jest przełącznik -v) - i przekieruje wynik do pliku wyjściowego.
W tym poście można znaleźć kilka dobrych wskazówek dotyczących grepa

Nir Alfasi
źródło
10
Czy grep pisze tylko wtedy, gdy kończy, czy pisze wiersz po wierszu podczas przetwarzania treści? Dzięki!
Crista23,
5
@alfasin - czy pojedynczy znak „>” nie nadpisze wyników w pliku wyjściowym? Czy nie powinniśmy używać podwójnego „>>” w celu dołączenia wyników do pliku?
GTodorov
3
@GTodorov tak, jeśli chcesz dołączyć użycie>>
Nir Alfasi
12
Dla przyszłych gości odpowiedzią na pytanie @ Crista23 jest napisanie, kiedy grep się zakończy
HBeel
35

Przekierowanie wyjścia programu jest wykonywane przez powłokę.

grep ... > output.txt

grepnie ma mechanizmu dodawania pustych wierszy między każdym dopasowaniem, ale zapewnia opcje, takie jak kontekst wokół dopasowanej linii i kolorowanie samego dopasowania. Zobacz grep(1)stronę podręcznika, aby uzyskać szczegółowe informacje, szczególnie opcje -Ci --color.

Ignacio Vazquez-Abrams
źródło