선택한 필드 요약

선택한 필드 요약

86에서 99 사이의 문자 위치를 가진 파일이 있습니다. RS위치 124-125를 포함하는 줄 에 대해서만 파일에 있는 총 수를 합산하고 싶습니다 .

이 작업을 수행하려고 하는데 수행 amt=$(cat custbills.cmp| cut -c124-125|grep 'RS'|cut -c86-99|awk '{s+=$1 } END {print s }')하면 echo $amt0이 표시됩니다. 이게 무슨 문제 야?

파일의 필드 범위는 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 }')

관련 정보