总结所选字段

总结所选字段

我有一个文件,其字符位置为 86 到 99 的数值。我想总结文件中存在的全部数量,仅适用于包含RS位置 124-125 的行。

我正在尝试这样做 amt=$(cat custbills.cmp| cut -c124-125|grep 'RS'|cut -c86-99|awk '{s+=$1 } END {print s }'),当我echo $amt这样做时,它显示为零。这有什么问题。

文件中的字段从 86 到 111,例如0000000016.65201406051101“这16.65是金额”。我这个文件中有 300 条记录。

1 到 136 个字段的示例数据:reportname 123456-78956 customername 0000000016.65201406051101 10RS 000000

答案1

amt=$(
    grep -E '^.{123}RS' custbills.cmp |
    cut -c86-99 | 
    tr '\n' '+' | 
    bc
)

或者

amt=$(
    awk '
        substr($0,124,2) == "RS" {amt+=substr($0,86,14)} 
        END {print amt}
    ' custbills.cmp
)

答案2

你发送给 bc 类似的东西

12 34 56 22 56 98

没有操作字符串。

编辑尝试

amt=$(cat custbills.cmp| cut -c86-99 |awk '{s+=$1 } END {print s }')

相关内容