Como escrever um script de shell para pesquisar de uma posição no arquivo, em vez de começar do início do arquivo novamente

1

Estou tentando escrever um script de shell para encontrar o valor armazenado após uma palavra repetitiva em um arquivo grande com milhões de linhas usando o loop for. Depois de encontrar a palavra repetitiva como eu faço script para começar a pesquisar após a linha atual no arquivo de modo que quando o loop itera ele não comece a pesquisar desde o início do arquivo.

Simplesmente, como encontrar a linha atual em um arquivo e como iniciar a pesquisa a partir dessa linha quando o loop for reiterado, em vez de começar a pesquisar desde o início.

E quantas coroas paralelas eu posso rodar existe algum limite ou apenas precisamos correr dependendo da nossa utilização de CPU e RAM.

    
por user6288321 12.06.2016 / 18:37

1 resposta

0

Isso é o que eu uso para descobrir em um arquivo de log se o programa foi iniciado com sucesso.

Para encontrar o tamanho atual do arquivo, você pode usar:

current_pos=$(stat -c "%s" file)

E então você usa a saída de

tail -c +$current_pos file

para começar a pesquisar a partir da posição memorizada.

Mas então é possível que quando você lê o tamanho do arquivo (e também quando você faz a busca) a última linha esteja incompleta. Isso depende do programa que grava o arquivo.

    
por 12.06.2016 / 22:36