Os utilitários GNU e BSD grep
têm a opção -A
para linhas após uma correspondência e uma opção -B
para linhas antes de uma correspondência. Assim, você pode fazer algo como:
$ grep -A 1 bcd myfile
abcdef
123
para mostrar a linha após a partida e
$ grep -B 1 ifl myfile
123
ghiflk
para mostrar a linha que precede a partida. Finalmente, você pode usar -C
para mostrar N linhas antes e depois da partida:
$ grep -C 1 ifl myfile
123
ghiflk
234
Se a sua versão de grep
não for compatível com esse recurso, você poderá tentar alguns outros métodos:
-
Usando as opções POSIX
grep
esed
junto com o shell:n=$(grep -n bcd foo | cut -d':' -f1); sed -n "${n},$((n + 1))p" myfile
-
Usando o AWK
awk '/bcd/ {print; getline; print}' myfile
E muitos mais.