Bash Divida em arquivos por linha

0

Eu tenho um enorme arquivo .txt com várias linhas, mas há uma string específica em uma linha que separa um número de linhas uma da outra

Eu quero usar essa string para dividir em vários arquivos chamados de string atual.

Exemplo de uma string específica:

 Found matches in (anything can be here):

Exemplo de dados em enorme .txt:

 Found matches in (anything can be here):
 ..............
 ..............
 ..............
 ..............
 ..............
 ..............

 Found matches in EXAMPLE:
 ..............
 ..............
 ..............
 ..............
 ..............
 ..............

Saída desejada:

 Found matches in (anything can be here).txt < contains data below its self but before another line stating " Found matches in

 Found matches in EXAMPLE.txt < contains data below its self but before another line stating " Found matches in

Também é possível que possa haver linhas duplicadas "Encontrados em (qualquer coisa pode estar aqui)" com dados, então em vez de sobrescrever o atual, é possível renomear (1) e (2) e (3) etc ou simplesmente ADICIONAR também o arquivo atual (não sobrescrever)

    
por questionaires 20.08.2018 / 21:46

2 respostas

1

Quão longe

awk '/^ *Found matches/ {FN = $0 ".txt"; next} {print >> FN}' file

você?

EDITAR: versão corrigida ("Encontrados encontrados" NÃO na primeira linha):

awk '/^ *Found matches/ {if (FN) close (FN); FN = $0 ".txt"; next} FN {print >> FN}' file
    
por 20.08.2018 / 22:08
0

in all honesty I'm new to bash, I wouldn't even know where to begin, sorry I know this place is for learning but any direction would help

Você não precisa se desculpar por não saber. Ninguém nasce proficiente em escrever scripts.

No entanto, como sua pergunta está agora, não é tanto pedir ajuda, mas sim "por favor, escreva um roteiro para mim que resolva X e Y".

Essas questões são geralmente desaprovadas por essa (e pela maioria das outras) comunidades GNU / Linux.

Mas, voltando ao problema em questão. O fato de você nem saber por onde começar. Aqui está como eu comecei, há vários anos:

  • Eu li este guia (e fiz todos os exercícios)
  • Então eu li este guia (e fiz todos os exercícios)
  • Comprei este livro . Leia e faça a maioria dos exercícios
  • Eu me envolvi com a comunidade (primeiro como observador)

Embora o passo mais importante e útil que tomei foi que usei o GNU / Linux para tudo . Significado; O GNU / Linux tornou-se meu único sistema operacional, forçando-me a resolver qualquer problema que eu enfrentasse, usando as habilidades que eu tinha, ou forçando-me a aprender novas habilidades *. Quando me deparo com este último, muitas vezes me volto para a comunidade em busca de ajuda - o que também me ensinou (espero!) Como formular boas perguntas.

Uma das muitas coisas boas com o GNU / Linux é que não há "burocracia" parando você na forma de licenciamento e / ou alto custo de software. Você é livre para mexer com qualquer distribuição de sua escolha. Faça isso e você se tornará proficiente o suficiente para resolver não apenas o problema colocado em sua pergunta, mas muitos outros.

Agora, estou plenamente ciente de que minha rota pode não se encaixar em todos. Você deve, é claro, escolher o caminho para o aprendizado que melhor se adapte a você.

Finalmente, eu sinceramente espero que isso não não pareça condescendente, minha intenção é exatamente o oposto; para ficar mais interessado e mergulhar fundo no mundo maravilhosamente nerd do GNU / Linux.

Feliz Hacking!

* Para você jovens lá fora; hackear o Xorg, e obter áudio e WiFi funcionando não era um passeio no parque usando o GNU / Linux há cerca de dez anos (e não comece com o bluetooth!)

    
por 21.08.2018 / 15:47