Removendo linhas baseadas em tags para arquivos diferentes e mesclando em um único arquivo

0

Eu tenho que desenvolver um script unix de tal forma que ele deve seguir o cenário abaixo.

Eu tenho 3 arquivos de texto, 1.txt, 2.txt e 3.txt

Dados nesses arquivos conforme abaixo.

HDR|1|2|3|||||||||||||||||||||||
DTL|||||||||||||||||||||||||||||||
DTL|||||||||||||||||||||||||||||||
TLR|||||||||||||||||||||||||||||||

Para o primeiro arquivo ( 1.txt ), temos que remover a linha com base na tag TLR. Para o segundo arquivo ( 2.txt ), temos que remover linhas baseadas em TLR e HDR. Para o terceiro arquivo ( 3.txt ), temos que remover a linha com base na tag HDR.

Depois de fazer a operação acima, eu tenho que colocar os dados desses três arquivos em um único arquivo.

Aqui não temos certeza de quantos arquivos conseguimos mesclar.não é possível codificar diretamente os nomes dos arquivos (como acima dos 3 arquivos de texto).

Como podemos alcançar esse roteiro?

    
por UNIXbest 13.08.2013 / 11:01

1 resposta

3

Isso pode ser feito simplesmente usando uma resposta de sua última questão relacionada e alguma saída redirecionada :

grep -vE "TLR" 1.txt > merged.txt
grep -vE "TLR|HDR" 2.txt >> merged.txt
grep -vE "HDR" 3.txt >> merged.txt

Você também pode agrupar esses comandos usando um sub-shell:

( grep -vE "TLR" 1.txt ;  grep -vE "TLR|HDR" 2.txt ; grep -vE "HDR" 3.txt  )> merged.txt
    
por 13.08.2013 / 12:16