Bash вывести только цифры

Как получить только числа в grep?

У меня есть файл вроде этого:

Я хочу найти появление чисел в указанном выше файле. Я придумал:

Но это печатает целое:

Скорее я хочу только 34 . Есть ли способ сделать это?

4 ответа

Вы можете использовать grep -E для доступа к синтаксису расширенного регулярного выражения (такой же, как egrep )

Я создал тестовый файл с содержимым ниже:

Теперь, чтобы grep только цифры из текста, вы можете использовать

Здесь «- o» используется для вывода только соответствующего сегмента строки, а не полного содержимого строки.

Скользящие скобки (например, <и>) указывают количество экземпляров совпадения. <1,4>требует, чтобы предыдущий символ или класс символа должен происходить по крайней мере один раз, но не более четырех раз.

Надеюсь, что это поможет

Вы можете использовать выражение скобки RE [:digit:] , указанное в разделе 9.3.5 стандарт POSIX в сочетании с -o для печати только соответствующих слов «

grep -o будет печатать только соответствующую часть строки. В противном случае grep будет печатать любые строки с рисунком.

Я использовал бы curl для доступа к вашему файлу локально или удаленно, тогда я бы grep строк с номерами, заключенными в (:), затем вырезал эти фрагменты и записывал в файл

принятый ответ игнорирует, что в предыдущих строках файла могут быть номера, он работает для данных примера, но что, если файл был удален?

Источник

Выделение числа из строки в выводе команды (Bash)

Приветствую всех. Имеется следующий скрипт:

Как в bsd не знаю, в linux можно так

Зачем тебе регулярки, если можно просто через col2 пропустить?

legolegs best.

Сделал так, однако получаю на выходе Illegal Number, а условие со сравнением версий отрабатывается некорректно (переменной CODEGEN всегда присвается значение «private-code»). Где ошибка?

Понял. Дело в том, что пытаюсь сравнить дробные числа. Не подскажите как правильно всё сделать?

Про illegal number не понял, а по поводу сравнения версий, да, это так не работает.

Мне нужно чтобы было >=1.15. Пытаюсь реализовать с помощью bc, но пока не получается

Так выше я привел код, который позволит сравнить версии.

А, хорошо, спасибо. Я просто не совсем понял как он работает. Но работает 🙂

Там соль в сортировке

Взгруснулось. Аж на комментарии хватило энтузиазма.

Источник

Как мне получить только цифры в grep?

У меня есть файл, как это:

Я хочу найти вхождение чисел в вышеуказанный файл. Я придумал:

Но это печать всего:

Скорее хочу только 34 . Есть ли способ сделать это?

Вы можете использовать grep -E для доступа к расширенному синтаксису регулярного выражения (То же, что egrep )

Я создал тестовый файл с содержанием ниже:

Теперь, чтобы извлечь только цифры из текста, который вы можете использовать

Здесь «-o» используется только для вывода соответствующего сегмента строки, а не полного содержимого строки.

Квадратные скобки (например, <и>) указывают количество совпадений. <1,4>требует, чтобы предыдущий символ или класс символов встречался хотя бы один раз, но не более четырех раз.

Надеюсь это поможет

Вы можете использовать скобочное выражение RE, [:digit:] указанное в разделе 9.3.5 стандарта POSIX , в сочетании с -o флагом для печати только соответствующих «слов»

grep -o будет печатать только соответствующую часть строки. В противном случае grep напечатает любые строки с шаблоном.

Я бы использовал curl для локального или удаленного доступа к вашему файлу, затем я бы собрал строки с числами, завернутыми в (:), затем обрезал эти фрагменты и записал в файл

принятый ответ игнорирует, что в предыдущих строках файла могут быть числа, он работает для данных примера, но что, если файл был удаленным?

Источник

Как заставить GREP выбирать только числовые значения?

я использую df команда в скрипте bash:

этот скрипт возвращает:

но мне нужны только цифры (чтобы сделать следующее сравнение). Если я использую grep регулярное выражение без многоточия:

Я ничего не получите. Как исправить?

6 ответов

если вы попробуете:

вот подробности о -o (или —only-matching флаг) работает с страница руководства grep.

печать только совпадающих (непустых) частей совпадающих строк, причем каждая такая часть находится в отдельной выходной строке. Выходные строки используют те же разделители, что и входные, а разделители-нулевые байты, Если также используется-z (—null-data) (см. другой Опции).

grep напечатаем любую строки соответствие шаблону, который вы предоставляете. Если вы хотите напечатать только ту часть строки, которая соответствует шаблону, вы можете передать — o:

— o, —only-matching Печать только совпадающих (непустых) частей совпадающей строки с каждой такой частью в отдельной выходной строке.

нет необходимости использовать grep здесь, попробуйте следующее:

Не используйте больше команд, чем необходимо, оставьте хвост, grep и cut. Вы можете сделать это только с (простой) awk

PS: предоставление размера блока en print только de persentage немного глупо ; -) поэтому оставьте также «- B MB»

df . |на awk -Ф'[несколько разделителей полей] » $NF==»последнее поле должно быть точно — > монтируется patition » номер из последнего поля)>’

в вашем случае, использовать:

выход: 81

Если вы хотите показать символ процента, Вы можете оставить-F’ [ % ]’, и ваше поле печати переместится на 1 Поле назад

Источник

Как в bash выдернуть слово или набор символов из вывода программы?

Приветы! Нужно выдернуть из вывода команды sensors(который lmsensors) температуру процессора(только цифры). Как это можно сделать?

что-то типа sensors | grep CPU > output

а output почикать sed’ом

Спасибо, будем читать маны

Номера hwmon и temp в твоём случае могут быть другими, тебе их нужно просто найти. Понять кто есть кто, можно например так

Поверь мне, sensors делает тоже самое.

А зачем это делать на баш, когда есть perl5/perl6/python3? Я уже пару лет стараюсь делать подобные вещи уже только на perl6. Зачем учить bash+sed+awk, когда всё равно они не всегда могут заменить нормальные скриптовые языки, а нормальный скриптовый язык их заменит на раз?

Зачем мне учить дополнительный скриптовый язык, когда нужда в подобных вещах, как выдернуть какое-то слово из вывода или что-то подобное мне требуется крайне редко?

Их и не надо учить. Берешь и пишешь.

Номера hwmon и temp в твоём случае могут быть другими, тебе их нужно просто найти

именно поэтому надо использовать sensors, чтобы не искать

Что-то вроде такого:
sensors | grep -E ‘^Physical id’ | awk ‘< print $4 >‘
А дальше — конкретней условия надо.

А ты наверно к себе домой тоже ходишь через соседский балкон? Так же проще, чем отыскать подходящий ключ для своей двери.

Например во многих дистрибутивах есть команда service, хотя проще и нагляднее всегда было /etc/init.d/$NAME $action

Но с переходом с SysV на upstart, a затем на systemd, нормальные админы (использующие «балконы», т.е. service) не заметили смены системы инициализации и продолжают использовать service

В случае смены материнской платы достаточно перенастроить sensors, а не лазать по всем скриптам и менять в них пути в /sys/

И правильная аналогия: я использую мастер-ключ, открывающий все двери, вместо поиска подходящего ключа.

А зачем это делать на баш, когда есть perl5/perl6/python3?

Используй тот инструмент, который знаешь.

Используй тот инструмент, который знаешь

Действительно, зачем покупать шумовку, когда пельмени можно выловить и по одному вилкой. Стоить потратить некоторое время на изучение нового инструмента (потратить некоторые деньги на шумовку), зато начать пользоваться более удобным и гибким инструментом. И да, судя по вопросу, баша (+coreutils+sed+awk+smth else) он один фиг не знает.

Источник

Читайте также:  Полиуретановая подошва чем чистить
Оцените статью