Форматирование переменной с плавающей точкой в операторе SED

Рассмотрение Вашей конфигурации IP:

eth0      Link encap:Ethernet  HWaddr 00:50:56:xx:xx:xx
          inet addr:10.2.0.63  Bcast:10.2.15.255  Mask:255.255.240.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:638762803 errors:0 dropped:0 overruns:0 frame:0
          TX packets:231307131 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:55502371533 (51.6 GiB)  TX bytes:23436883491 (21.8 GiB)

Попытайтесь изменить Bcast на 10.2.255.255 и Маска к 255.0.0.0

Откройте терминал и введите следующую команду:

sudo vi /etc/network/interfaces

Найти eth0 раздел и IP-адрес установки следующим образом:

auto eth0
iface eth0 inet static
address 10.2.0.63
netmask 255.0.0.0
broadcast 10.2.255.255

Сохраните и закройте файл. После того, как сделанный, сеть перезапуска:

$ sudo /etc/init.d/networking restart

Проверьте новый IP-адрес:

$ ifconfig eth0
$ ifconfig
2
25.06.2014, 02:33
2 ответа

Пропустите выход через

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; \
5
27.01.2020, 21:57

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

o="$(printf "%.2f\n" "$$m")"
p="$(printf "%.2f\n" "$$n")"
sed -i "3s/.*/$$o $$p/" txt.in;
0
27.01.2020, 21:57

Теги

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