Como remover linhas do meio de um arquivo usando o terminal Linux

Como remover linhas do meio de um arquivo usando o terminal Linux
Como remover linhas do meio de um arquivo usando o terminal Linux

Vídeo: Como remover linhas do meio de um arquivo usando o terminal Linux

Vídeo: Como remover linhas do meio de um arquivo usando o terminal Linux
Vídeo: Existe una Diferencia Entre Formato de Archivo y Extensión - Fácil y Rápido - YouTube 2024, Maio
Anonim
Quando você gerencia seus próprios servidores, uma das coisas que você acaba precisando fazer em uma base semi-regular é extrair coisas do meio de um arquivo. Talvez seja um arquivo de log, ou você precisa extrair uma única tabela do meio do seu arquivo de backup do MySQL, como eu fiz.
Quando você gerencia seus próprios servidores, uma das coisas que você acaba precisando fazer em uma base semi-regular é extrair coisas do meio de um arquivo. Talvez seja um arquivo de log, ou você precisa extrair uma única tabela do meio do seu arquivo de backup do MySQL, como eu fiz.

Para descobrir os números de linha, um simples comando grep -n executou o trabalho (o argumento -n produz os números de linha). Isso tornou mais fácil descobrir o que eu precisava extrair.

grep -n wp_posts howtogeekdb010114.bak | more

Resulta em algo como isto, que mostra os números de linha no lado esquerdo da saída. Piping tudo em "mais" garante que você pode ver a primeira linha sem rolagem. Agora você tem o número da linha para começar e, provavelmente, aquele para terminar.

4160:-- Table structure for table `wp_posts` 4163:DROP TABLE IF EXISTS `wp_posts`; 4166:CREATE TABLE `wp_posts` ( 4203:-- Dumping data for table `wp_posts` 4206:LOCK TABLES `wp_posts` WRITE; 4207:/*!40000 ALTER TABLE `wp_posts` DISABLE KEYS */; 4208:INSERT INTO `wp_posts` VALUES (1,2,'2006-09-11 05:07:23','2006-09-11

Você poderia, é claro, apenas canalizar a saída do grep para outro arquivo, assim:

grep keyword filename.txt > outputfile

No meu caso, isso não queria funcionar, porque não consegui importar o backup resultante por algum motivo. Então, eu encontrei uma maneira diferente de extrair as linhas usando sed, e esse método funcionou.

sed -n '4160,4209p' howtogeekdb0101140201.bak > outputfile

Basicamente, a sintaxe é assim, certificando-se de usar o argumento -n, e incluir o "p" após o segundo número de linha.

sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' filename > outputfilename

Algumas outras maneiras de extrair linhas específicas no meio de um arquivo? Você pode usar o comando “head” com o argumento + number para ler apenas as primeiras x linhas de um arquivo e, em seguida, usar tail para extrair essas linhas. Não é a melhor opção, muita sobrecarga. Opção mais simples? Você pode usar o comando split para transformar o arquivo em vários arquivos diretamente no número de linha desejado e, em seguida, extrair as linhas usando a cabeça ou a cauda.

Ou você pode apenas usar sed.

Recomendado: