awk 명령을 사용하지 않고 UNIX에서 특정 열의 모든 번호를 추가하는 방법은 무엇입니까?

awk 명령을 사용하지 않고 UNIX에서 특정 열의 모든 번호를 추가하는 방법은 무엇입니까?

항목과 해당 가격이 포함된 비용 보고서인 다음 콘텐츠가 포함된 샘플 파일을 살펴보겠습니다.

$ cat file
Item1,200
Item2,500
Item345,900
Item20896,800
Item111,600

이제 친구가 나에게 도전을 해왔다.총 가격모든 프로젝트에서 - 하지만아니요사용 awk. 그게 가능합니까?

답변1

GNU 배시 사용:

while IFS="," read -r item number; do ((sum=$sum+$number)); done < file; echo $sum

산출:

3000

답변2

왜 사용하고 싶지 않은지 이해가 안 되지만 awk물론 다음과 같은 몇 가지 대안이 있습니다.

  • 진주(팀 토디)

    $ perl -F, -lane '$k+=$F[1];}{print $k' file 
    3000
    $ perl -lne '/,(\d+)/;$k+=$1;}{print $k' file 
    3000
    $ perl -F, -lane '$k+=$F[1];END{print $k}' file 
    3000
    
  • 클래식 *nix 도구

    $ cut -d, -f2 file | tr '\n' '+' | sed 's/+$/\n/' | bc
    3000
    $ cut -d, -f2 file | paste -d'+' - - - - - | bc
    3000
    
  • 최신 Bourne 시리즈 쉘(예: bash, ksh, zsh)

    $ k=0; while IFS=, read a num; do ((k+=num)); done < file ; echo "$k"; 
    3000
    
  • POSIX 쉘

    k=0; while IFS=, read a num; do k=$((k+num)); done < file ; echo "$k"; 
    

답변3

사용디지털 유틸리티:

numsum -s, -2 file

사용데이터 혼합:

datamash  -t, sum 2 < file

사용:

cut -d, -f2 file | jq -s add

관련 정보