amt=$(
grep -E '^.{123}RS' custbills.cmp |
cut -c86-99 |
tr '\n' '+' |
bc
)
Ou
amt=$(
awk '
substr($0,124,2) == "RS" {amt+=substr($0,86,14)}
END {print amt}
' custbills.cmp
)
Eu tenho um arquivo com um valor numérico nas posições de caractere 86 a 99. Quero somar todo o valor presente no arquivo, apenas para linhas que contenham RS
na posição 124-125.
Estou tentando fazer como
amt=$(cat custbills.cmp| cut -c124-125|grep 'RS'|cut -c86-99|awk '{s+=$1 } END {print s }')
e quando eu faço echo $amt
está mostrando zero. o que há de errado nisso?
Campos no arquivo de 86 a 111, como 0000000016.65201406051101
Nesse 16.65
é valor. Eu tenho 300 registros neste arquivo.
Dados de amostra de 1 a 136 campos: reportname 123456-78956 customername 0000000016.65201406051101 10RS 000000
amt=$(
grep -E '^.{123}RS' custbills.cmp |
cut -c86-99 |
tr '\n' '+' |
bc
)
Ou
amt=$(
awk '
substr($0,124,2) == "RS" {amt+=substr($0,86,14)}
END {print amt}
' custbills.cmp
)
você envia para bc algo como
12 34 56 22 56 98
sem string de operação.
editar tente
amt=$(cat custbills.cmp| cut -c86-99 |awk '{s+=$1 } END {print s }')
Tags text-processing bc