Как разделить вывод одной команды выводом другого?

^(?!_)           # don't start with _
(?!.*?_$)        # don't end with _
[a-zA-Z]         # the first character must be a letter
[a-zA-Z0-9_]+$   # after that digits and underscores are ok

Вы выразили двумя различными способами, которыми не должен быть первый символ _, но ничто здесь ничего не говорит о __ в середине.

Используя отрицательное предвидение, просто выразить “один или несколько алфавитно-цифровых символов или _, не запускайте с _ или цифра, не заканчивайте _, и не позволяйте __ anywhwere”:

^(?![0-9_]|.*__.*_$|)[0-9A-Z_a-z]+$

Без отрицательного предвидения (например, в awk или grep -E), можно разделить части:

^[A-Za-z][0-9A-Za-z]*(_[0-9A-Za-z]+)*$

Начнитесь с буквы, затем обнулите или больше буквенно-цифрового индикатора, затем у Вас могут быть символы нижнего подчеркивания, но каждый должен сопровождаться одним или несколькими буквенно-цифровой индикатор.

4
10.06.2014, 09:53
4 ответа

Это должно помочь:

(awk '{printf "%s/", $2}' /proc/loadavg; grep -c processor /proc/cpuinfo;) | bc -l

Также вы должны получить загрузку из /proc/loadavg, где команда uptime также получит ее.

.
5
27.01.2020, 20:49
decimal_places=2
dc  <<< "${decimal_places}k $(uptime | awk '{print $11}'|  cut -d"," -f1) $(grep -c processor /proc/cpuinfo) /p"

Этот ответ использует $() в bash, поэтому временные переменные не нужны. В нем также используется dc, калькулятор. Мы говорим dc о точности, используя k, затем даем ему 2 числа, затем просим его разделить их и вывести ответ.

.
1
27.01.2020, 20:49

Просто делай бэш-скриптинг. Получите оба значения в 2 разные переменные. Затем с помощью команды bc разделите одно от другого. Так же просто.

2
27.01.2020, 20:49

Ksh и zsh имеют арифметику с плавающей точкой. Другие оболочки, включая bash, имеют только целочисленную арифметику (ограниченную 32 или 64 битами).

Каждая страница man-оболочки имеет раздел, посвященный арифметике. Если вам нужны вычисления с плавающей точкой, то их сложнее найти. Основным способом поиска man-страниц является команда apropos apropos, которая ищет однострочные описания страниц. Так как вам нужно что-то использовать из оболочки, вам нужен раздел 1. apropos -s 1 float не обнаруживает ничего релевантного на моей Linux машине. Что в итоге работает, так это

$ apropos -s 1 calculator
bc (1)               - An arbitrary precision calculator language
dc (1)               - an arbitrary precision calculator

Веб может предложить гораздо больше ресурсов. На первой странице http://www.google.com/search?q=bash+float я нахожу Как делать целочисленные и плавающие вычисления, в bash или других языках/фреймворках? и теперь ваш вопрос (а также несколько потоков Stack Overflow). http://www.google.com/search?q=bash+division дает мне несколько SO потоков, вторым из которых является как я могу получить деление стека на float в bash?. Вы также можете искать на Unix Stack Exchange, который имеет вопросительный тег , а теперь также : Как выполнять целочисленные и с плавающей точкой вычисления, на bash или других языках/фреймворках?

Общим выбором для вычислений с плавающей точкой или больших целочисленных вычислений является bc. Это классическая утилита Unix, которая была стандартизирована.

Другой стандартной утилитой, которая может выполнять вычисления с плавающей точкой и с которой, возможно, легче начать, чем с прецизионной моделью bc, является awk. Несмотря на то, что awk в первую очередь предназначен для обработки текста, он также может выполнять вычисления с плавающей запятой.

1
27.01.2020, 20:49

Теги

Похожие вопросы