Dividir arquivo em um padrão

0

Eu tenho um arquivo como abaixo.

***ABC***
Line1*
L*ine2*
***DEF***
Line3*
Lin*e4*

Eu preciso criar os 2 arquivos ABC e DEF com os dados abaixo:

ABC.dat:

Line1*
L*ine2*

DEF.dat:

Line3*
Lin*e4*

Estou bem para gerar o arquivo usando o script de shell pequeno também.

    
por Sreekesh Darshi 06.04.2017 / 12:57

1 resposta

2

$ awk '/^\*\*\*/{gsub(/\*/,""); fname=$0".dat"; next} {print > fname}' ip.txt 
$ cat ABC.dat 
Line1*
L*ine2*
$ cat DEF.dat 
Line3*
Lin*e4*
  • /^\*\*\*/ linhas de correspondência começando com ***
    • gsub(/\*/,"") exclui todos os * dessas linhas
    • fname=$0".dat" atribui os caracteres restantes adicionados com .dat a fname variable
    • next passa para a próxima linha
  • print > fname imprime o conteúdo da linha atual no nome do arquivo salvo em fname
por 06.04.2017 / 14:04