두 개의 파일이 있습니다. 첫 번째 파일에는 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 ...