precisa obter o número da linha de uma string pesquisada em

2
find / -name "php.ini"

Eu sei que posso encontrar o comando acima para obter a localização exata do arquivo pesquisado. Eu preciso encontrar a string oci8 neste arquivo.

desde que eu não tenho acesso ao GUI, eu não posso usar um editor para fazer isso para mim :( E porque o tamanho do arquivo é relativamente grande, eu preciso saber qual comando eu tenho que usar para obter o número da linha da primeira ocorrência!?

    
por Mohammad Reza Saberi 26.10.2014 / 10:40

2 respostas

3

Você pode tentar o comando abaixo find que por sua vez invoca o awk.

find / -name "php.ini" -exec awk '/oci8/{print NR; exit}' {} \;

Exemplo:

$ cat php.ini
http://stackoverflow.com
foo oci8
oci8
$ find . -name "php.ini" -exec awk '/oci8/{print NR; exit}' {} \;
2

Explicação:

Pesquise os arquivos dentro do diretório . current ( / significa diretório raiz ) com o nome php.ini . Se um arquivo foi encontrado com esse nome mencionado, execute ou execute essa operação awk '/oci8/{print NR; exit}' {} nos arquivos fundados.

awk '/oci8/{print NR; exit}'

Procura a linha que contém a string oci8 . Se encontrar algum, então ele imprime o número da linha correspondente ( print NR ) e, de repente, sai ( exit ) da busca posterior.

Through Perl

find / -name "php.ini" -exec perl -nle 'print $. and last if /oci8/;' {} \;
    
por Avinash Raj 26.10.2014 / 10:58
3

Use grep com find :

find / -name "php.ini" -exec grep -Hnm1 'oci8' {} +

grep destina-se à pesquisa de padrões em arquivos. Os sinalizadores -H e -n permitem imprimir o nome do arquivo e o número da linha das linhas correspondentes, respectivamente. O sinalizador -m limita a pesquisa a um determinado número de linhas correspondentes, neste caso, 1.

    
por muru 26.10.2014 / 11:02