awkрешение:
awk 'BEGIN{ FS=OFS="|" }{ cs=$2$3$4; gsub(/ +/, " ", cs); print $1,sprintf("%-32s",cs),$5 }' abc.txt
FS=OFS="|"
-разделитель полей
cs=$2$3$4
-объединены 2-е, 3-е и 4-е поля
gsub(/ +/, " ", cs)
-удаление лишних пробелов
sprintf("%32s",cs)
-форматированная объединенная строка
Выход:
ID|first namemiddle namelast name |address
1 | john whatever smith | somewhere
В итоге я исправил это сам. В моем zshrc
глотательном вводе были функции.