Что не так с моим кодом и почему он не заменит замену «КАЖДЫЙ ИНСТАНС» заглавной буквы G на Gb, - PullRequest
0 голосов
/ 29 февраля 2012

Мой код:

df -h | sed 's/G/Gb/' >> $2

Вывод:

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              29Gb  5.5G   22G  21% /
devtmpfs              757M  196K  757M   1% /dev
tmpfs                 757M  436K  757M   1% /dev/shm

Вывод мне нужен:

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              29Gb  5.5Gb   22Gb  21% /
devtmpfs              757M  196K  757M   1% /dev
tmpfs                 757M  436K  757M   1% /dev/shm

Ответы [ 2 ]

3 голосов
/ 29 февраля 2012

Добавить глобальный флаг

df -h | sed 's/G/Gb/g' >> $2

Ваш исходный код меняет первое совпадение шаблона. Добавление "g" (глобальное) после окончания "/" делает его глобальным - изменяет все соответствующие экземпляры. Не это может иметь непредвиденные последствия, например Если бы любое из имен volumne содержало "G", это тоже изменилось бы.

0 голосов
/ 29 февраля 2012

Это также преобразует М в Мб и К в Кб:

df -lh | perl -pe 's/([0-9])(G)( )/\1Gb\3/g; s/([0-9])(M)( )/\1Mb\3/g; s/([0-9])(K)( )/\1Kb\3/g'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...