Якби вхід складав лише два стовпці, я б запропонував використовувати column -t
. Тут це не зовсім працює, хоча column
утиліта буде розглядати будь-яку кількість пробілів чи вкладок як роздільники стовпців:
$ column -t file1
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
"Michael Rod" - це два стовпці, так що в одному рядку є один стовпець більше, ніж інші рядки, що змішує результат.
Ми можемо обійти це, вставивши символ перед вкладкою до останнього стовпця, а потім дозволити column
використовувати (лише) це як роздільник:
$ awk '{ $NF = "\t" $NF; print }' file1 | column -t -s $'\t'
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
У Awk NF
- це кількість полів (стовпців) і $NF
є даними в останньому полі. Сценарій, який я використовую, просто модифікує дані останнього поля, попередньо передбачивши символ вкладки, перед тим, як надрукувати повний рядок.
Якщо ваша оболонка не розуміє $'\t'
, ви можете вибрати іншого символу, який не є частиною даних:
awk '{ $NF = "@" $NF; print }' file1 | column -t -s '@'
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9