как использовать Sed для извлечения плавающего числа - PullRequest
1 голос
/ 12 марта 2020

Мне нужно прочитать плавающее число из файла A, расположенного рядом с константой1, следующим образом

constA \t 3.1415; //some comments

Я пытался, но не знаю, как удалить остальные вещи после нужного числа

#value=$(sed -En 's/constA[[:blank:]]+//p' fileA)

Таким образом, команда читает

3.1415; //some comments

Мне нужно просто

3.1415

СОВЕРШЕНО: Работает со следующим кодом строки

value=$(sed -En 's/constA[[:blank:]]+//p' fileA | sed 's/;.*//')

1 Ответ

1 голос
/ 12 марта 2020

Вы можете использовать

value="$(sed -En 's/constA[[:blank:]]+([0-9][0-9.]*).*/\1/p' <<< "$s")"

См. онлайн-демонстрацию

Подробнее

  • -En - E включает синтаксис POSIX ERE, а n подавляет вывод строки по умолчанию
  • constA[[:blank:]]+([0-9][0-9.]*).* совпадения с образцом:
    • constA - подстрока
    • [[:blank:]]+ - 1+ горизонтальный пробел
    • ([0-9][0-9.]*) - группа 1: ди git, а затем любые 0+ точек или цифр
    • .* - остальная часть строки.

\1 сохранит значение группы 1 в результате.

...