28Jun
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 |maisResultados 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-11Você poderia, é claro, apenas transmitir a saída do grep para outro arquivo, como este:
grep keyword filename.txt & gt; arquivo de saídaNo 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; outputfileBasicamente, 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; outputfilenameAlgumas 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.