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.