У меня есть файл с двумя столбцами, как показано ниже (пример):
ФАЙЛ 1:
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
Мне нужно отформатировать это, и мой ожидаемый результат должен быть:
ФАЙЛ 1:
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
shell
columns
text-formatting
Баран
источник
источник
Michael Rod 3
это 2 столбца, а не 3?Ответы:
Если бы на входе было только два столбца, я бы предложил использовать
column -t
. Это не совсем работает здесь, так какcolumn
утилита будет обрабатывать любое количество пробелов или табуляций как разделители столбцов:«Michael Rod» - это два столбца, так что в одной строке на один столбец больше, чем в других строках, что портит вывод.
Мы можем обойти это, вставив символ табуляции перед последним столбцом, а затем разрешив
column
использовать (только) это в качестве разделителя:В Awk
NF
- количество полей (столбцов) и$NF
данные в последнем поле. Используемый мной скрипт просто изменяет данные последнего поля, добавляя символ табуляции перед печатью всей строки.Если ваша оболочка не понимает
$'\t'
, вы можете выбрать другой символ, который не является частью данных:источник