Gostaria de grep para uma ocorrência em um arquivo de texto e, em seguida, imprimir as seguintes N linhas após cada ocorrência encontrada. Alguma ideia?
fonte
Gostaria de grep para uma ocorrência em um arquivo de texto e, em seguida, imprimir as seguintes N linhas após cada ocorrência encontrada. Alguma ideia?
O Grep possui as seguintes opções que permitirão que você faça isso (e coisas assim). Você pode dar uma olhada na página de manual para obter mais informações:
-A num Imprime linhas numéricas do contexto à direita após cada correspondência. Veja também as opções -B e -C.
-B num Imprime num linhas de contexto principal antes de cada partida. Consulte também as opções -A e -C.
-C [num] Imprime linhas numéricas do contexto inicial e final ao redor de cada correspondência. O padrão é 2 e é equivalente a -A 2 -B 2. Nota: nenhum espaço em branco pode ser fornecido entre a opção e seu argumento.
Se você possui o GNU grep
, é a opção -A
/ --after-context
. Caso contrário, você pode fazê-lo awk
.
awk '/regex/ {p = N}
p > 0 {print $0; p--}' filename
awk '/regex/{p=2} p > 0 {print $0; p--}' filename
- funciona, o seu não.Use o
-A
argumento paragrep
especificar quantas linhas além da correspondência serão exibidas.fonte
Imprimir N linhas após as linhas correspondentes
Você pode usar
grep
com a-A n
opção para imprimir N linhas após as linhas correspondentes.Por exemplo:
Outras opções relacionadas:
Imprimir N linhas antes das linhas correspondentes
Usando a
-B n
opção, você pode imprimir N linhas antes de combinar as linhas.Imprimir N linhas antes e depois das linhas correspondentes
Usando a
-C n
opção, você pode imprimir N linhas antes e depois das linhas correspondentes.fonte