2017-02-10 4 views
0

Я хотел бы выполнить некоторые основные математические вычисления в пакетном/Cygwin, но решение, описанное в StackOverflow question: Calculating the sum of two variables in a batch script, использует команду set /A.Вычисление суммы двух переменных в одноканальной линии Batch/UNIX

Это меня не устраивает, потому что я хотел бы иметь все в трубе (стиль UNIX, следовательно, Cygwin).

Моя идея следующая: У меня есть список файлов, содержащих запись. Я бы хотел показать для всего упомянутого файла одну строку за этой записью.

Поэтому я думал о следующем подходе:

Найдите строку, в которой найдена записи: fgrep -n <entry> // это показывает номер строки вместе с самой записью
только показать номер строки: fgrep -n <entry> | awk -F ':' '{print $1}'
Добавить «1» на этот номер
Возьмите первое количество записей: head -<new number>
взять только последнюю строку: tail -1

Но, как я не знаю, как добавить 1 к числу, я застрял здесь.

Я уже пробовал использовать bc (базовый калькулятор), но моя установка Cygwin, похоже, не покрывает это. Как я хочу иметь все в пределах одной линии трубопровода, использование set /A не имеет смысла.

Есть ли у кого-нибудь идеи?
Заранее спасибо

+1

Вы можете добавить BC в свою установку cygwin, перезапустив установку и установив ее. – AlG

+0

Пакет cygwin называется «bc»: https://cygwin.com/cgi-bin2/package-grep.cgi?grep=bin%2Fbc&arch=x86_64 –

+0

'expr' может использоваться для выполнения некоторой арифметики –

ответ

0

Извините, извините, я просто понял, что awk способен делать некоторые базовые вычисления, так заменяя {print $1} на {print $1 + 1} моя проблема решена.

0

Bash имеет встроенную поддержку для объявления переменных целыми числами и для выполнения арифметических операций с целыми числами. У Bash есть команда help, и у вас должны быть установлены как man bash, так и info bash.

Смежные вопросы