CounterNumber="$(find /path/to/file -name 'counter_*' | awk -F_ 'BEGIN{sum=0} {sum+=$NF} END{print sum}')"
# your script...
rm "/path/to/file/counter_$CounterNumber"
touch "/path/to/file/counter_$((CounterNumber+1))"
Давайте разберем вызов awk
в первой строке;
awk -F_ 'BEGIN{sum=0} {sum+=$NF} END{print sum}'
С man awk
:
-F fs
- разделитель полей fs
Use fs for the input field separator (the value of the FS predefined variable).
Это означает, что awk
будет разбивать текст на _
, если -F
не указан пробел будет использоваться по умолчанию.
Часть BEGIN
выражения awk
будет выполняться один раз перед выполнением какой-либо обработки. Здесь мы инициализируем переменную, которая будет отслеживать нашу сумму,
Вторая группа {}
будет работать для каждой строки, переданной в awk
, обновив переменную sum
последним полем. В этом случае $1
= counter
, $2
(а также последнее поле, $NF
) - это то, что когда-либо было числом.
Часть выражения END
будет выполняться один раз , прежде чем awk
выйдет, поэтому просто распечатайте значение sum
.