Форматирование переменной с плавающей запятой в инструкции SED

Как часть рецепта makefile, я хочу несколько раз отрегулировать несколько строк в некотором текстовом файле txt.in В частности, я хочу, в частности, обновить третью строку, содержащую просто два числа, разделенных пробелом. Их следует отформатировать как 0.00 0.00 . Таким образом, я включил код в мой make-файл, чтобы проверить, могу ли я это сделать.

 # Makefile to test for-loop SHELL=/bin/zsh for: for k in 1 2 3; do \ let n="$$k*0.25"; \ let m="$$n+0.25"; \ sed -i "3s/.*/$$n $$m/" txt.in; \ done 

В 0.7500000000 1.0000000000 это дает 0.7500000000 1.0000000000 . Там могут быть более эффективные способы сделать это, и я был бы рад узнать об этом, но я бы очень хотел узнать, есть ли способ получить формат.

2 Solutions collect form web for “Форматирование переменной с плавающей запятой в инструкции SED”

Вытяните выход через

 sed 's/\([0-9]\{1,\}\.[0-9][0-9]\)[0-9]*\>/\1/g' 

для получения желаемого формата. Эффективно, ваше заявление sed изменится на:

 sed -i "3s/.*/$$n $$m/" txt.in | sed -i 's/\([0-9]\{1,\}\.[0-9][0-9]\)[0-9]*\>/\1/g' txt.in; \ 

Вы также можете использовать printf . Это даст вам нулевое заполнение для целых чисел, даже если ваша оболочка не предоставляет его:

 o="$(printf "%.2f\n" "$$m")" p="$(printf "%.2f\n" "$$n")" sed -i "3s/.*/$$o $$p/" txt.in; 
  • UNIX - команда разбивать файл на несколько файлов со всеми строками для каждых 3 уникальных значений в столбце
  • Использование ссылки на строковую переменную bash в sed
  • удаление пробелов из первого столбца
  • Удалить строку, содержащую нечувствительность к регистру
  • CSV столбчатый переформатированный с SED (или что-то другое coreutil)
  • Awk и отбрасывание несовпадающих токенов в строке?
  • Используйте список строк, чтобы заменить параметр sql, распечатывающий весь файл для каждой замены
  • Команда sed удалила все и оставила только слова между шаблонами?
  • Печать только уникальных строк из файла, а не дубликатов
  • добавить обратную косую черту перед конкретным символом
  • Как сообщить «sed» на месте изменения
  • Interesting Posts

    В crontab я могу указать количество дней до конца месяца?

    Настройка сервера tftp для нескольких клиентов

    Почему при загрузке файла SO он добавляет версию до конца?

    Вопрос о резервном копировании Qemu

    Отправка звука через сеть

    Как настроить wirehark с правильными разрешениями

    как включить переменные в конфигурационные файлы Bind9?

    bash / sh для замены текста между некоторыми тегами / строками в текстовом файле

    "Diff orig new" против "diff new orig"

    Может ли суперпользователь (с «корневым» доступом) манипулировать данными в базе данных, установленной на сервере?

    Есть ли команда для перечисления файлов, исключение подкаталогов и отображение размера и даты?

    Заблокировать определенный URL-адрес?

    Исправить определение физического объема LVM после удаления / dev / sdb

    Обмен переменными в нескольких сценариях оболочки

    Конкретный пользовательский SSH-RSA с корневым доступом (через AWS EC2)

    Linux и Unix - лучшая ОС в мире.