Encontre arquivos que contenham uma string, mas NÃO na linha correta

0

De um determinado diretório, estou tentando determinar quais arquivos:

  1. contém pattern
  2. mas NÃO na linha 1

Eu sei como fazer a parte 1 - grep -nHRF [pattern] [path] - no entanto, estou procurando filtrar com base naqueles que correspondem ao pattern , mas não aparecem na linha 1.

    
por Kevin Suttle 15.03.2018 / 16:39

3 respostas

1

Algo como:

grep -n 'pattern' path | grep -v ':1:'
    
por 15.03.2018 / 16:49
0

Usando sed com um intervalo de endereços:

sed -n '2,/pattern/p' file

, que será impresso na linha correspondente ao pattern a partir da segunda linha do arquivo.

    
por 15.03.2018 / 16:49
0

grep -nHRF pattern path mas sem linha 1, com o GNU sed, seria:

shopt -s nullglob globstar
for f in path/**; do
    sed -n '1n; /pattern/{F;=;p}' "$f"
done | paste -d: - - -

Você precisa iterar os arquivos, caso contrário, = exibirá o número de linha cumulativo de todas as linhas de todos os arquivos, e 1n corresponderia apenas à primeira linha do primeiro arquivo.

    
por 15.03.2018 / 17:22

Tags