Вот один из возможных подходов:sed -E 's/([0-9]*\.)/0\1/g;s/.//;s/([0-9]*,)/00\1/'
echo "1.11.111.1111,Some Text Here" | sed -E 's/([0-9]*\.)/0\1/g;s/.//;s/([0-9]*,)/00\1/'
1.011.0111.001111,Some Text Here
Также работайте с этой строкой:
echo "1.1.1.1,Some Number 1 Here" | sed -E 's/([0-9]\.)/0\1/g;s/.//;s/([0-9],)/00\1/'
1.01.01.001,Some Number 1 Here
...и эта строка:
echo "1.2.2101.7191,Some Text Here" | sed -E 's/([0-9]*\.)/0\1/g;s/.//;s/([0-9]*,)/00\1/'
1.02.02101.007191,Some Text Here
Резидентный размер включает общие страницы :, в том числе общие библиотеки и, в данном случае, apache2
сам двоичный файл. Инструменты, которые вы используете, подсчитывают всю эту общую память один раз для каждого процесса, но они присутствуют только один раз в физической памяти, поэтому они используют гораздо меньше, чем вы ожидаете от добавления резидентных размеров.
Чтобы лучше понять реальное использование памяти вашими процессами,вам нужно посмотреть на /proc/<pid>/smaps
; для каждого раздела, описанного там, сравните значение Rss
и значение Shared_...
. Ядро пытается помочь вам выполнить интересующий вас расчет, вычисляя долю процесса -в RSS, заданную как Pss
.