Unix ve Türevlerinde Dosyadaki Sayıların Toplamını Hesaplatma için birden fazla yöntem mevcut.
1 2 3 4 5 6 7 8 |
[root@omeroner /tmp]$cat /tmp/file.txt 286 255564800 609 146 671290 [root@omeroner /tmp]$ |
Yukarıda belirttilen dosyadaki tüm numaraların toplanması için;
1.Yol: Awk Kullanma
1 2 |
[root@omeroner /tmp]$awk '{s+=$0} END {print s}' /tmp/file.txt 256237131 |
2.Yol: UNIX/Linux ‘paste’ komutunu ve ‘bc’ kullanma
1 2 3 4 5 6 |
[root@omeroner /tmp]$paste -sd+ /tmp/file.txt 286+255564800+609+146+671290+ [root@omeroner /tmp]$echo $(paste -sd+ /tmp/file.txt)0 286+255564800+609+146+671290+0 [root@omeroner /tmp]$echo $(paste -sd+ /tmp/file.txt)0 | bc 256237131 |
3.Yol:UNIX/Linux ‘tr’ komutunu ve ‘bc’ kullanma
1 2 3 4 5 6 7 |
[root@omeroner /tmp]$tr -s '\n' '+' < /tmp/file.txt 286+255564800+609+146+671290+ #dosyanın sonuna ekstra olarak 0 ekliyoruz. [root@omeroner /tmp]$echo $(tr -s '\n' '+' < /tmp/file.txt)0 286+255564800+609+146+671290+0 [root@omeroner /tmp]$echo $(tr -s '\n' '+' < /tmp/file.txt)0 | bc 256237131 |
4.Yol:
1 2 |
[root@omeroner /tmp]$printf "%d\n" $(( $(tr -s '\n' '+' < /tmp/file.txt) 0 )) 256237131 |
5.Yol: Döngüyle hesaplatma
1 2 3 4 5 6 |
sum=0 for num in $(cat /tmp/file.txt) do ((sum+=num)) done echo $sum |
6.Yol: Pyhton ile hesaplama;
1 2 3 4 5 6 7 8 9 |
>>> sum = 0 >>> lines = open("/tmp/file.txt", "r").readlines() >>> lines ['286\n', '255564800\n', '609\n', '146\n', '671290\n'] >>> for line in lines: ... sum+=eval(line) ... >>> sum 256237131 |
So, what do you think ?