先日会社のチャットでワンライナー足し算大会になったので覚え書き的に残します。
お題
以下のファイルに記載されている1 - 5の数字を足す
$ cat num.txt
1
2
3
4
5
ShellScript
$ xargs < num.txt
1 2 3 4 5
$ xargs < num.txt | tr ' ' '+'
1+2+3+4+5
$ xargs < num.txt | tr ' ' '+' | bc
15
$ awk '{a=a+$0}END{print a}' < num.txt
15
$ S=0;while read N; do S=`expr "$N" "+" "$S"` ; done < num.txt ; echo $S
15
$ xargs < num.txt
1 2 3 4 5
$ xargs -n 1 < num.txt
1
2
3
4
5
$ xargs -n 1 seq < num.txt
1
1
2
1
2
3
1
2
3
4
1
2
3
4
5
$ xargs -n 1 seq < num.txt | wc -l
15
$ cat num.txt | datamash sum 1
15
Perl
$ perl -nale 'for(@F[0]){$sum+=$_}END{print $sum}' num.txt
15
$ perl -nE '$sum+=$_;END{say $sum}' num.txt
15
PHP
$ php -R '$a=$a+$argn;echo $a;echo "\n";' < num.txt | tail -n 1
15
$ php -r "echo array_sum(file('num.txt'));"
15
Ruby
$ ruby -e 'puts ARGF.map(&:to_i).reduce(:+)' num.txt
15
$ ruby -ne 'BEGIN{$sum = 0}; $sum += $_.to_i; END{puts $sum}' num.txt
15
$ ruby -e 'p eval([*$<]* ".+")' num.txt
15
Python
$ python -c "import sys, operator;print reduce(operator.add, map(int, sys.stdin.readlines()))" < num.txt
15
$ python -c "print eval('+'.join(open('num.txt').read().split()))"
15