다중 열 파일의 열 누적 합계를 계산하고 bash 명령을 사용하여 전체 파일을 저장하는 방법은 무엇입니까?
입력 파일의 예는 다음과 같습니다.
0 1869.75 31
1.342 1869.75 31
9.8 2479.45 177.8
74.15 3730.05 909.1
43.6 5793.95 3562.95
가장 왼쪽 열에 위에서 아래로 누적 합계가 포함되고 파일의 나머지 부분은 동일하게 유지되기를 원합니다. 샘플 출력 파일은 다음과 같습니다.
0 1869.75 31
1.342 1869.75 31
11.142 2479.45 177.8
85.292 3730.05 909.1
128.892 5793.95 3562.95
"50.txt"라는 파일에 대해 다음과 같은 간단한 명령을 시도했지만 새 파일 "n_50.txt"에서는 아무 작업도 수행되지 않았습니다.
awk '{sum+=$1;print}' 50.txt > n_50.txt
미리 도움을 주셔서 감사합니다.
답변1
다음과 같이 시도해 볼 수 있습니다.
# cat q
0 1 2
1 2 3
2 3 4
3 4 5
# awk '{sum+=$1;$1=sum}1' q
0 1 2
1 2 3
3 3 4
6 4 5
아이디어는 첫 번째 필드를 다음으로 바꾸는 것입니다.sum
답변2
업데이트해야 할 $1
값
노력하다
awk '{sum+=$1;$1=sum;print} ' 50.txt > n_50.txt
(이미지 복사/붙여넣기가 불가능해서 테스트해보지 않았습니다)
답변3
밀러( ) 사용 mlr
:
$ cat file
1.1 2 3
4.4 5 6
5.5 6 7
8.8 9 0
$ mlr --nidx put '@sum += $1; $1 = @sum' file
1.100000 2 3
5.500000 5 6
11.000000 6 7
19.800000 9 0
$ mlr --nidx put '@sum += $1; $1 = fmtnum(@sum,"%lg")' file
1.1 2 3
5.5 5 6
11 6 7
19.8 9 0