PYTHON
Simple | Grep
O comando (programa) grep é uma das ferramentas mais úteis e versáteis disponível no Unix. Ele procura por padrões especificados pelo usuário dentro de arquivos de texto. Em outras palavras, você pode pesquisar por palavras ou padrões e a linha ou linhas que possuem o conteúdo procurado serão exibidas.
Neste exercício, sua tarefa consiste em construir um programa para encontrar ocorrências de uma cadeia de caracteres em um arquivo, no estilo do programa grep.
Entrada:
A entrada para seu programa é uma palavra p, um inteiro c e o nome n do arquivo.
Saída:
A saída do programa deverá ocorrer da seguinte forma: Se p aparece no arquivo, seu programa deve imprimir o nome do arquivo seguido do número da linha em que p aparece. Em seguida, c linhas anteriores a linha que contém p, a linha p e as c linhas posteriores a linha p. Entre uma ocorrência e outra, deve-se imprimir uma linha em branco, e se p não aparece em um certo arquivo, seu programa não deve imprimir nada.
Notas:
Cada linha dos arquivos de texto não tem mais do que 512 caracteres e a palavra e o arquivo não possuem mais do que 30 caracteres.
Teste no anexo
Soluções para a tarefa
Antes de passarmos ao programa, para evitar dúvidas, vale ressaltar que a numeração das linhas começa em 1 e, também, que o arquivo de texto deve estar alocado na mesma pasta deste script ou será necessário informar o caminho para este arquivo.
Agora sim, vamos ao código e, posteriormente, comentou um pouco mais sobre o que foi feito.
[Python 3.8]
Comentários:
--> O código começa lendo os parâmetros necessários que serão informados pelo usuário como uma string e dividindo-os em três variáveis separadas: "p", "c" e "n"
--> Abrimos o arquivo "n" no modo de leitura ('r') com uma estrutura with e, utilizando o método readlines(), "transformamos" o conteúdo do arquivo em uma lista em que cada elemento é representado por uma linha do texto.
--> Um laço for é usado para percorrermos as linha do texto guardadas na lista "conteudo" e, em cada uma dessas iterações, verificamos se a string "p" está contida na linha.
--> Quando a string "p" estiver presente na linha, devemos mostrar ao usuário uma ou uma série de linhas do texto "n". Para isso, utilizamos outro for com o numero de iterações determinado por uma função range(). Perceba também que é utilizado um condicional if para verificar se a linha de número "i" existe no documento.