Chciałbym pozdrowić wystąpienie w pliku tekstowym, a następnie wydrukować następujące N wierszy po każdym znalezionym wystąpieniu. Jakieś pomysły?
źródło
Chciałbym pozdrowić wystąpienie w pliku tekstowym, a następnie wydrukować następujące N wierszy po każdym znalezionym wystąpieniu. Jakieś pomysły?
Grep ma następujące opcje, które pozwolą ci to zrobić (i podobne rzeczy). Możesz zajrzeć na stronę podręcznika, aby uzyskać więcej informacji:
-A num Wydrukuj liczbę linii kontekstu końcowego po każdym dopasowaniu. Zobacz także opcje -B i -C.
-B num Wydrukuj liczbę linii wiodącego kontekstu przed każdym dopasowaniem. Zobacz także opcje -A i -C.
-C [num] Drukuj num linii wiodącego i końcowego kontekstu otaczającego każde dopasowanie. Domyślnie jest to 2 i jest równoważne -A 2 -B 2. Uwaga: między opcją a jej argumentem nie można podać białych znaków.
Jeśli masz GNU grep
, jest to opcja -A
/ --after-context
. W przeciwnym razie możesz to zrobić za pomocą awk
.
awk '/regex/ {p = N}
p > 0 {print $0; p--}' filename
awk '/regex/{p=2} p > 0 {print $0; p--}' filename
- działa, twoje nie.Użyj
-A
argumentu, abygrep
określić liczbę wierszy poza dopasowaniem do wyniku.źródło
Wydrukuj N linii po dopasowaniu linii
Możesz użyć
grep
z-A n
opcją drukowania N linii po dopasowaniu linii.Na przykład:
Inne powiązane opcje:
Wydrukuj N linii przed dopasowaniem linii
Za pomocą
-B n
opcji możesz wydrukować N linii przed dopasowaniem linii.Wydrukuj N linii przed i po dopasowaniu linii
Za pomocą
-C n
opcji możesz wydrukować N linii przed i po dopasowaniu linii.źródło