Авторский канал для тех, кто хочет глубже погрузиться в мир Linux.
Подойдет для разработчиков, системных администраторов и DevOps
Реклама: @dad_admin
Post #326
1.36K
Печать таблиц с автошириной и выравниванием
column, awk, printf - минимализм, читаемость и стиль без excel и pandas. Bash-скрипты часто выводят списки, но без форматирования:
Вывод «прыгает» - неудобно читать. Решаем с помощью:
column - автоширина и выравнивание
awk - гибкая фильтрация и формат
printf - точный контроль длины столбцов
▪️ Быстрое решение: column -t
Результат:
-t = "табличный режим", разбивает по пробелам, автоширина.
▪️ Альтернатива: awk с выравниванием
Результат:
Плюсы:
Точное выравнивание;
Подходит для чисел, выравненных по правому краю (%6s, %6d).
▪️ Автоматизация с массивом и printf
▪️ Таблица из файла CSV
-s, - задает разделитель (запятая), -t - табличный вид.
BashTex 📱 #bash
column, awk, printf - минимализм, читаемость и стиль без excel и pandas. Bash-скрипты часто выводят списки, но без форматирования:
echo "user1 1234 active"
echo "user10 99 disabled"
Вывод «прыгает» - неудобно читать. Решаем с помощью:
column - автоширина и выравнивание
awk - гибкая фильтрация и формат
printf - точный контроль длины столбцов
▪️ Быстрое решение: column -t
#!/bin/bash
echo -e "USER ID STATUS\nuser1 1234 active\nuser10 99 disabled" | column -t
Результат:
USER ID STATUS
user1 1234 active
user10 99 disabled
-t = "табличный режим", разбивает по пробелам, автоширина.
▪️ Альтернатива: awk с выравниванием
awk '{ printf "%-10s %-6s %-10s\n", $1, $2, $3 }' <<< "user1 1234 active
user10 99 disabled"
Результат:
user1 1234 active
user10 99 disabled
Плюсы:
Точное выравнивание;
Подходит для чисел, выравненных по правому краю (%6s, %6d).
▪️ Автоматизация с массивом и printf
header=("USER" "ID" "STATUS")
rows=(
"user1 1234 active"
"user10 99 disabled"
"admin 5678 maintenance"
)
{
printf "%-10s %-6s %-12s\n" "${header[@]}"
for row in "${rows[@]}"; do
printf "%-10s %-6s %-12s\n" $row
done
} | column -t
▪️ Таблица из файла CSV
column -s, -t < users.csv
-s, - задает разделитель (запятая), -t - табличный вид.
BashTex 📱 #bash
- 🔥 12

