Encontre um arquivo e apague algumas linhas dentro dele

3

Como posso encontrar um arquivo específico e excluir algumas linhas dele usando o terminal em uma única linha?

por exemplo. Eu quero encontrar file.txt no meu diretório específico e, em seguida, quero excluir linhas de 5 a 10 dentro dele. É possível fazer isso usando um único comando de linha?

    
por Avani badheka 28.09.2016 / 12:44

1 resposta

3

Você poderia usar ...

find /path/to/specific/directory -maxdepth 1 -type f -name "file.txt" -exec sed -i.bak '5,10 d' '{}' \;

Explicação:

  • -maxdepth 1 não procura em nenhum subdiretório do diretório especificado
  • -type f só encontra arquivos, não diretórios
  • -exec faça o seguinte comando para os arquivos encontrados
  • sed '5,10 d' exclui linhas de 5 a 10
  • -i.bak modifica o arquivo em si, em vez de imprimir para stdout, mas faz uma cópia de backup do arquivo original com a extensão .bak

EDIT : embora, na verdade, se você sabe exatamente onde o arquivo está e como é chamado, obviamente você pode fazer

sed -i.bak '5,10 d' /path/to/file.txt

bobo eu ...

    
por Zanna 28.09.2016 / 12:50