Já que você parece ter o GNU awk, que tal
gawk '
/^Row Count/ {nextfile}
NR == 5 {$0 = "Filename" OFS $0; print}
FNR > 5 {$0 = FILENAME OFS $0; print}
' OFS='\t' *.txt
Eu tenho uma pasta com arquivos de texto separados por tabulação. Todos eles têm o mesmo formato. Aqui está um link para os dados de amostra:
(Este exemplo tem os 5 cabeçalhos, 5 linhas de dados que eu quero e todos os dados finais que eu quero não querem.)
Eu quero remover completamente as primeiras quatro linhas de cabeçalho, depois usar o quinto como cabeçalho para todas as linhas em um único arquivo que combina os dados - SEM os dados finais.
Eu também quero acrescentar dois campos: um campo de nome de arquivo e outro para o valor de Prelim 4. Assim, a saída ficaria assim:
Filename Curr Storefront Name Identifier M-Type Quantity Net Amt Net Amt Total Code Title Item A-Type B-Type Vendor_ID Offline Indicator company donotuse
file1 ZAR ZA 44056971 Family Monthly PAID 1 .061038 .061038 US3E40400141 subtitle1 person 1 1 US3E40400141 1 BlueMelon
file2 ZAR ZA 44056975 Family Monthly PAID 1 .061038 .061038 US3E40400142 subtitle2 person2 1 1 US3E40400142 1 BlueMelon
file3 ZAR ZA 44057007 Family Monthly PAID 1 .061038 .061038 US3E40400144 subtitle3 person3 1 1 US3E40400144 1 BlueMelon
...
file179 ZAR ZA 44057330 Family Monthly PAID 1 .061038 .061038 US3E40400107 subtitle5 person5 1 1 US3E40400107 1 BlueMelon
Eu sou um noobie COMPLETO para scripts de shell. Literalmente 1 semana de experiência.
Para adicionar o primeiro campo, cheguei até aqui e estou preso:
gawk 'NR==5;FNR>5 {print FILENAME,"\t",$0} /Row/ {f=0; nextfile} f' *.txt > result.txt
Eu não tenho idéia de como adicionar o segundo campo (o valor dos dados preliminares 4).
Qualquer ajuda? Obrigado!
awk 'FNR == 4 { pd4=$2; };
NR == 5 { print $0 " FILENAME PD4";};
FNR == 6 { print $0 " " FILENAME " " pd4; nextfile; }' file1 file2