28Jun

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

Quando você gerencia seus próprios servidores, uma das coisas que você acabou precisando fazer de forma semi-regular é extrair coisas do meio de um arquivo. Talvez seja um arquivo de log, ou você precisa extra uma única tabela do meio do seu arquivo de backup do MySQL, como eu fiz.

Para descobrir os números de linha, um comando grep -n simples fez o trabalho( o argumento -n emite os números de linha).Isso facilitou a descoberta do que eu precisava extrair.

grep -n wp_posts howtogeekdb010114.bak |mais

Resultados em algo como isto, que mostra os números de linha no lado esquerdo da saída. Piping tudo em "mais" garante que você possa ver a primeira linha sem que ele se deslize. Agora, você obteve o número da linha para começar, e provavelmente o que acaba.

4160: - Estrutura de tabela para tabela `wp_posts` 4163: DROP TABLE SE EXISTE` 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 transmitir a saída do grep para outro arquivo, como este:

grep keyword filename.txt & gt; arquivo de saída

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

sed -n '4160,4209p' howtogeekdb0101140201.bak & gt; 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 'FIRSTLENENUMBER, LASTLINENUMBERp 'filename & gt; outputfilename

Algumas outras maneiras de você retirar linhas específicas no meio de um arquivo? Você poderia usar a "cabeça""Com o argumento + number apenas para ler as primeiras x linhas de um arquivo e, em seguida, use a cauda para extrair essas linhas. Não é a melhor opção, muitas despesas gerais. Opção mais simples? Você pode usar o comando dividir para transformar o arquivo em vários arquivos diretamente no número da linha desejado e, em seguida, extraia as linhas usando cabeça ou cola.

Ou você pode usar apenas sed.