paste
вставляет символы табуляции между содержимым вставленных файлов. Мы можем использовать это, чтобы проанализировать результат в awk
и распечатать столбцы с пользовательским форматированием printf
.
Вертикальные символы в выходных данных ниже служат только для украшения.
По правому краю -по ширине 25+5 символов:
$ paste file1 file2 | awk -F '\t' '{ printf("|%25s|%5s|\n", $1, $2) }'
| small| A|
| incredibly humungous| B|
По левому краю -по ширине 25+5 символов:
$ paste file1 file2 | awk -F '\t' '{ printf("|%-25s|%-5s|\n", $1, $2) }'
|small |A |
|incredibly humungous |B |
Слишком короткий первый столбец слева -по ширине 5+5 символов:
$ paste file1 file2 | awk -F '\t' '{ printf("|%-5s|%-5s|\n", $1, $2) }'
|small|A |
|incredibly humungous|B |
Слишком короткий первый столбец с усечением данных слева -по ширине 5+5 символов:
$ paste file1 file2 | awk -F '\t' '{ printf("|%-5.5s|%-5s|\n", $1, $2) }'
|small|A |
|incre|B |
Определение самой длинной строки в file1
и file2
и использование ее в качестве ширины поля в вызове printf()
:
$ paste file1 file2 | awk -F '\t' -v len=$( awk -F '\t' 'length > m { m = length } END { print m }' file1 file2 ) '{ printf("|%*s|%*s|\n", len, $1, len, $2 ) }'
| small| A|
|incredibly humungous| B|
То же самое, но отдельно для двух столбцов:
$ longest_line() { awk -F '\t' 'length > m { m = length } END { print m }' "$1"; }
$ paste file1 file2 | awk -F '\t' -v len1=$( longest_line file1 ) -v len2=$( longest_line file2 ) '{ printf("|%*s|%*s|\n", len1, $1, len2, $2 ) }'
| small|A|
|incredibly humungous|B|
У меня был местный друг, которому я доверяю с root-доступом к моей машине, войдите в систему напрямую и посмотрите. Он смог решить эту проблему, и оказалось, что это несколько вещей вместе взятых. Ради истории, я резюмирую то, что он нашел здесь.
Мой друг смог распутать репозитории, удалить и переустановить правильную версию сломанных пакетов и закрепить их, чтобы в будущем они не загружались из неправильного репозитория. Let's Encrypt теперь вызывает Apt без ошибок и корректно обновляет сертификат.
Спасибо за помощь!