파일을 사용한 산술 시퀀스

파일을 사용한 산술 시퀀스

두 개의 파일이 있습니다. 첫 번째 파일에는 123과 같이 숫자가 기록되어 있고 두 번째 파일은 동일합니다. file_Two = 123 + 123을 file_one에 추가하고 결과 = 246을 추가하고 싶습니다. 합하거나 나누려면 산술 시퀀스를 변환하고 싶습니다. 파일 번호로

답변1

파일을 읽은 후 쉘을 사용하여 산술을 수행하십시오.

$ echo 123 > file1
$ echo 123 > file2
$ printf '%d\n' $(( $(<file1) + $(<file2) ))
246
$ printf '%d\n' $(( $(<file1) / $(<file2) ))
1

또는 다음을 사용하십시오 bc.

bc <<< $"$(<file1) + $(<file2)"
bc <<< $"$(<file1) / $(<file2)"

bc여기에서는 산술 연산을 수행하고 파일 내용을 입력으로 사용하기 전에 파일 내용을 읽는 작업을 쉘에 제공합니다 bc.

답변2

$ echo 123 > file1; echo 234 > file2
$ paste -d+ file1 file2 | bc
357
$ paste -d/ file1 file2 | bc -l
.52564102564102564102

답변3

이 파일의 모든 내용이 숫자이고 추가 텍스트가 없다고 가정하면 다음은 제공하는 모든 파일의 모든 줄을 합산하는 Perl의 줄입니다.

perl -ne '$s+=$_;END{print "$s\n"}' file1 file2 file3 ...

-n스위치가 Perl에게 주어진 파일의 각 줄에서 주어진 코드를 실행하도록 지시하기 때문에 작동합니다 . 줄의 내용이 $_변수에 들어갈 때마다. 따라서 $s+=$_누적 합계를 유지하고 END값을 $s.

또한 awk:

awk '{ s+= $0 } END{print s}' file1 file2 file3 ...

관련 정보