красивый табличный вывод команды ip a (bash script)

я тут поигрался с командой вывода инфы адресов и интерфейсов

умучал чатик гпт, но он таки тупит и не может написать код, какой сам предложил, а именно, чтобы ип адреса выводились друг под другом, если на одном интерфейсе их будет несколько, но чтобы мак выводился в первой строчке

я в этих ваших башах ничего не понимаю, поэтому если тут есть спецы - допишите

он еще стал использовать printf, но там что-то какие-то ошибки лезут

root@docker:~# source ./.bashrc Интерфейс Статус IP-адреса MAC -bash: printf: --: invalid option printf: usage: printf [-v var] format [arguments] -bash: ./.bashrc: line 25: syntax error near unexpected token (' -bash: ./.bashrc: line 25: ipa() {'

даю рабочий код без принтф

alias ipa='
# Заголовок
echo -e "\033[1;36mИнтерфейс    \033[1;37mСтатус   \033[1;32mIP-адреса                  \033[1;33mMAC\033[0m"
echo "-----------------------------------------------------------------------"
ip -br a | grep -v "^lo" | while read -r iface state rest; do
    # Собираем все IP-адреса (игнорируем metric)
    ips=$(echo "$rest" | grep -oE "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/[0-9]+" | tr "\n" "," | sed "s/,$//")
    # Получаем MAC
    mac=$(ip -br link | grep -w "$iface" | awk "{print \$3}")
    # Цвет для статуса: UP зеленый, DOWN красный
    if [ "$state" = "UP" ]; then
        color_state="\033[1;32m$state\033[0m"
    else
        color_state="\033[1;31m$state\033[0m"
    fi
    # Используем табуляции для точного выравнивания колонок
    printf "\033[1;36m%s\033[0m\t%-6b\t\033[1;32m%-25s\033[0m\t\033[1;33m%s\033[0m\n" "$iface" "$color_state" "$ips" "$mac"
done'

может быть можно взять вывод в формате json и написать как-то более цивильней?

да, чатик же мне говорил про jq в самом начале, а я его не понял и подумал, что это jquery

а при чем тут баш и яваскрипт?

оказалось, что это не яваскрипт, просто прога так называется для обработки джейсонов в баше

sudo apt install jq