Script para copiar linhas em um título específico e criar um novo arquivo de texto a partir do log.txt original [closed]

1

Eu tenho um arquivo log.txt que contém 20k linhas. Cada linha tem números e coordenadas no plano xyz e eles são separados por conjuntos. Conjuntos podem ser identificados por nomes como ABC_1, ABC_2 e assim por diante no log.txt

A partir deste arquivo log.txt eu quero separar todos os conjuntos de dados em arquivos de texto individuais, que devem conter todos os dados do conjunto (por exemplo, ABC_1).

Meu log.txt parece com abaixo.

ABC_1: 
1, (xyz coordinates)
2, (xyz coordinates)
3, (xyz coordinates)

 .... Continue
ABC_2: 
101, (xyz coordinates)
102, (xyz coordinates)
103, (xyz coordinates)

 .... Continue
ABC_3: 
201, (xyz coordinates)
202, (xyz coordinates)
203, (xyz coordinates)

.... Continue
ABC_99: 
9991, (xyz coordinates)
9992, (xyz coordinates)
9993, (xyz coordinates)

.... Continue

Eu quero criar um script que possa me fornecer 99 arquivos de texto individuais de um único arquivo log.txt e que deve ser nomeado como nome de conjunto ABC_1.TXT , ABC_2.TXT ... para ABC_99.TXT de log.txt .

    
por Aniket 05.05.2018 / 13:21

2 respostas

2

com csplit

csplit -s -b %d.txt -f ABC_ Log.txt /ABC_/ {*}
    
por 05.05.2018 / 14:44
1

Awk solução:

awk '/^ABC_/{
         if (fn) close(fn); sub(":", "", $1);
         fn = $1".txt"; next
    }
    { print > fn }' Log.txt
    
por 05.05.2018 / 13:36