Форматирование списков с помощью команды column в * nix

Я пытаюсь отформатировать список записей в bash, и я использую команду column. Тем не менее, параметр -t по умолчанию использует любые пробелы в качестве разделителя, который не работает для данных, которые у меня есть (он содержит пробелы и вкладки). Я не могу понять, как получить флаг -s, чтобы указать символ новой строки в качестве единственного разделителя столбцов.

Ответы

Ответ 1

В теории, чтобы указать новую строку, вы можете использовать нотацию $'...', которая похожа на '...', за исключением того, что она поддерживает escape-последовательности C-стиля:

column -t -s $'\n' list-of-entries.txt

Однако я не совсем понимаю цель этого. Новая строка - это разделитель строк, поэтому разделитель столбцов $'\n' эквивалентен отсутствию разделителя столбцов:

column -t -s '' list-of-entries.txt

что означает, что вход будет обрабатываться как имеющий только один столбец; поэтому он эквивалентен не использованию column вообще:

cat list-of-entries.txt

Похоже, вы действительно не хотите использовать флаг -t, потому что целью флага -t является обеспечение того, чтобы каждая строка ввода становилась одной строкой вывода, и это не похоже на что вы хотите. Я предполагаю, что вы этого хотите:

column list-of-entries.txt

который будет обрабатывать каждую строку list-of-entries.txt как значение, которое должно быть помещено в одну ячейку таблицы, которую выдает column.

Ответ 2

Это работает для вывода довольно печатной версии файла с разделителями табуляции

column -t -s $'\t' list-of-entries.txt