Вы можете передать по конвейеру:
expand -t "$((${COLUMNS:-$(tput cols)} / 2))"
Или для угловых скобок:
awk -v cols="${COLUMNS:-$(tput cols)}" '
BEGIN {width = cols/2-1; space = sprintf("%*s", width, "")}
/^\t/ {print space ">", substr($0, 2); next}
{printf "%-*s<\n", width, $0}'
Если ваш tput
не выводит количество столбцов, вы можете попробовать проанализировать вывод stty size
или stty -a
. Или используйте zsh -c 'echo $ COLUMNS'
(также работает с mksh
). Не существует стандартного / переносимого способа получить эту информацию.
Если входные файлы содержат символы с многобайтовой или двойной шириной, YMMV. В зависимости от реализации expand
/ awk
выравнивание может быть отключено.
Это также предполагает, что во входных файлах нет строки, начинающейся с символа табуляции. Если это не может быть гарантировано, реализация GNU comm
имеет - разделитель вывода
, который вы можете использовать для указания уникальной строки. Или вы можете реализовать функциональность comm
в awk
, что не должно быть слишком сложным.
Принудительно передать терминал, чтобы kinit
мог выполнять терминал -без -эха, который он делает по умолчанию:
ssh -t myserver kinit