Salvando dados entre nomes no terminal para novos arquivos?

1

Eu tenho o seguinte arquivo de texto:

(Employee Ashley)

insert text here

(Employee Bob)

insert text here

(Employee Joseph)

insert text here

Eu gostaria de pegar o texto para cada "funcionário" e salvá-lo em um novo arquivo. Eu posso contar manualmente o número de funcionários, se necessário. Como posso fazer isso tudo a partir do terminal?

Eu estava pensando em "awk", em seguida, uma maneira de detectar os parênteses abertos, já que é a única coisa que tem o texto entre eles e, em seguida, no diretório de arquivos > diretório de arquivos

Alguém poderia me ajudar a amarrar as pontas soltas?

    
por Alvin Nunez 16.09.2015 / 00:59

2 respostas

1
awk ' /^\(Employee/ { FILENAME="";
                      for ( i=2 ; i<=NF; i++)
                         FILENAME=FILENAME $i;
                      FILENAME=substr(FILENAME,1,length(FILENAME)-1) ".txt";
                    }
     !/^\(Employee/ { print >> FILENAME } '

Isso pressupõe que a primeira linha sempre será um identificador de funcionário. O for loop é para permitir sobrenomes ou múltiplos nomes (Betty Lou, Mary Jo, etc.)

    
por 16.09.2015 / 01:39
2
while read -r line; do
    if [[ $line == "(Employee "*")" ]]; then
        t="${line#(Employee }"
        t="${t%)}"
        fn="${t}.txt"
    fi
    echo "$line" >>$fn
done <original_file.txt

Isso colocará o texto em Ashley.txt , Bob.txt , Joseph.txt , & c.

    
por 16.09.2015 / 01:11