Por favor, note que os arquivos que você forneceu não são separados por vírgula; eles são separados por vírgula. Você precisará remover esses espaços após as vírgulas, caso contrário, o método pode não funcionar corretamente.
O seguinte é um pseudocódigo que deve ajudá-lo a começar.
Cuide de usar os caracteres certos.
Minha abordagem seria:
- leia e armazene a primeira linha do arquivo1
FIRSTLINE="'head -n 1 file1'"
- escreva isso para file3
echo "$FIRSTLINE" >> file3
- leia a primeira linha do arquivo1 e obtenha o segundo argumento com uma vírgula como separador
POSLVL="'head -n 1 file1 | awk -F , '{print $2}''"
Agora você tem o nível de posição em uma variável, isso permite que você calcule a taxa por hora para esse código pesquisando no arquivo2:
RATE='grep "$POSLVL" file2 | awk -F , '{print $2}''
Podemos continuar lendo sempre a linha de arquivo1 usando algo assim:
MAXLINES='wc -l file1 | awk '{print $1}''
LINE=2
while test $LINE -le $MAXLINES
do
READLINE="'head -n $LINE | tail -n 1'"
LINE_HOURS=0
TOTAL_COST=0
# count nr of commas to determine the number of in/out pairs
COMMAS='echo $READLINE | grep -o , | wc -l | awk '{print $1}''
# if comma-count = 1 (1 in/out pair)
# extract first and second numbers
# write these numbers to file3 without a newline (echo -n "$NR1,$NR2")
# work out difference in hours
# add to LINE_HOURS
# if comma-count > 2 (2 in/out pairs)
# extract third and fourth numbers
# write these numbers to file3 without a newline
# work out difference in hours
# add to LINE_HOURS
# maybe add more if's for up to 3, 4 or 5 pairs..
# -- reached end of the line --
# write LINE_HOURS to file3
# calculate total cost by multiplying LINE_HOURS * RATE and store in TOTAL_COST
LINE=$((LINE + 1))
done
# -- reached end of the file --
# write TOTAL_COST to file3
Veja como você vai.