Восстанавливаемая память SLAB может повторно использоваться ядром для других целей, невосстановимая — нет. То, где в конечном итоге учитывается какое-либо данное распределение SLAB, зависит от свойств пула, в котором оно размещено, что, в свою очередь, означает, что это свойство самого распределения.
Немного OT, но, тем не менее, этот огромный кусок невосстановимой памяти SLAB, вероятно, является ZFS ARC.
Если последний столбец пуст, удалить последний столбец из вывода. $1=$1
заставляет awk воссоздать строку с разделителем поля вывода (OFS ).
awk '$NF=="" {NF--} {$1=$1}1' FS=':' OFS=' + ' file
Выход:
Hello + world Hello + worlds Hello + world + example
См.:8 Powerful Awk, встроенный -в переменных — FS, OFS, RS, ORS, NR, NF, FILENAME, FNR
Если вам нужно заботиться только о пустом последнем поле, то использование sed
будет короче:
$ sed 's/:$//; s/:/ + /g' file
Hello + world
Hello + worlds
Hello + world + example
Ваша предпринятая команда awk
может быть спасена следующим образом:
$ awk -F":" '{ print $1 " + " $2 ($3 != "" ? " + " $3 : "") }' file
Hello + world
Hello + worlds
Hello + world + example
Или, используяOFS
(разделитель выходного поля):
$ awk -F":" -v OFS=' + ' '{ print $1, $2 ($3 != "" ? OFS $3 : "") }' file
Hello + world
Hello + worlds
Hello + world + example
Дополнительное избавление от отрицательного теста:
$ awk -F":" -v OFS=' + ' '{ print $1, $2 ($3 == "" ? "" : OFS $3 ) }' file
Hello + world
Hello + worlds
Hello + world + example