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.