Условия печати awk

Восстанавливаемая память SLAB может повторно использоваться ядром для других целей, невосстановимая — нет. То, где в конечном итоге учитывается какое-либо данное распределение SLAB, зависит от свойств пула, в котором оно размещено, что, в свою очередь, означает, что это свойство самого распределения.

Немного OT, но, тем не менее, этот огромный кусок невосстановимой памяти SLAB, вероятно, является ZFS ARC.

2
31.08.2019, 21:46
2 ответа

Если последний столбец пуст, удалить последний столбец из вывода. $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

5
27.01.2020, 21:49

Если вам нужно заботиться только о пустом последнем поле, то использование 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
6
27.01.2020, 21:49

Теги

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