Perfeito, abaixo da versão somente do awk:
find . -type f -name \*.txt -printf "%f$ cat stat01.txt
18910101;19860630
$ cat stat56.txt
18980101;19990630
$ cat stat87.txt
19010101;19661229
" | xargs -0 -I xxxx sed -ni '
2 {
$ {
s/^[^;]*;[^;]*;[^;]*;[^;]*;\([^;]*\);\([^;]*\).*$/;/
p
q
}
s/^[^;]*;[^;]*;[^;]*;[^;]*;\([^;]*\).*$//
h
}
$ {
s/^[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;\([^;]*\).*$//
H
x
s/\n/;/
p
}' xxxx
Obrigado ao muito famoso Sed - Uma Introdução e Tutorial de Bruce Barnett
Resultados:
$ find . -type f -name \*.txt -printf "%f$ cat test01.txt
Name;Price;Amount;Description
Bread;2.1;3;healthy one
$ cat test02.txt
Name;Price;Amount;Description
Water;0.0;100;For life
Wine;10.3;1;Less than half a glass a day
$ cat test03.txt
Name;Price;Amount;Description
House;1000.0;1;home
Car;500.5;0;no need
Bike;10.3;5;Good for the planet and for me
" | xargs -0 -I xxxx sed -ni '
2 {
$ {
s/^[^;]*;\([^;]*\);\([^;]*\).*$/;/
p
q
}
s/^[^;]*;\([^;]*\).*$//
p
}
$ {
s/^[^;]*;[^;]*;\([^;]*\).*$//
p
}' xxxx
----
primeira versão para referência
Com base em sua entrada, eu inventei o formato de arquivo de dados e um script sed para trabalhá-los.
Experimente:
$ cat test01.txt
2.1;3
$ cat test02.txt
0.0
1
$ cat test03.txt
1000.0
5
Remove a primeira linha que contém os cabeçalhos.
Mantém apenas a coluna 2 da primeira linha de dados encontrada e a coluna 3 da última linha de dados do arquivo.
Se um arquivo contiver apenas uma linha de dados, ele permanecerá em uma coluna de linha 2 e coluna 3.
hehehe isso é estranho, mas eu me diverti muito !!!
Os arquivos de dados no diretório atual:
find . -type f -name \*.txt -printf "%f$ cat stat01.txt
18910101;19860630
$ cat stat56.txt
18980101;19990630
$ cat stat87.txt
19010101;19661229
" | xargs -0 -I xxxx sed -ni '
2 {
$ {
s/^[^;]*;[^;]*;[^;]*;[^;]*;\([^;]*\);\([^;]*\).*$/;/
p
q
}
s/^[^;]*;[^;]*;[^;]*;[^;]*;\([^;]*\).*$//
h
}
$ {
s/^[^;]*;[^;]*;[^;]*;[^;]*;[^;]*;\([^;]*\).*$//
H
x
s/\n/;/
p
}' xxxx
Resultados:
$ find . -type f -name \*.txt -printf "%f$ cat test01.txt
Name;Price;Amount;Description
Bread;2.1;3;healthy one
$ cat test02.txt
Name;Price;Amount;Description
Water;0.0;100;For life
Wine;10.3;1;Less than half a glass a day
$ cat test03.txt
Name;Price;Amount;Description
House;1000.0;1;home
Car;500.5;0;no need
Bike;10.3;5;Good for the planet and for me
" | xargs -0 -I xxxx sed -ni '
2 {
$ {
s/^[^;]*;\([^;]*\);\([^;]*\).*$/;/
p
q
}
s/^[^;]*;\([^;]*\).*$//
p
}
$ {
s/^[^;]*;[^;]*;\([^;]*\).*$//
p
}' xxxx
Por favor, forneça 2 arquivos de dados curtos e o resultado esperado, e eu modificarei esta resposta.