Одна из замечательных особенностей Ruby - это его способность вести себя как типичные инструменты командной строки Unix, например, (как в примере из официальной документации):
$ echo "matz" | ruby -pe '$_.upcase!'
MATZ
Awk, с другой стороны, может выполнять агрегирование по строкам из стандартного ввода, например, суммируя последовательность чисел:
$ for (( i=0; $i < 50; i++ )); do echo $i; done | awk 'BEGIN { tot=0; } { tot += $0 } END { print tot }'
1225
Я хотел бы знать, возможно ли заставить Ruby делать то, что достигается с помощью блоков Awk BEGIN
и END
, описанных выше, чтобы иметь возможность выполнять аналогичные операции агрегирования.