У меня есть короткий Bash-скрипт, который выводит подключенные устройства в систему:
#!/bin/bash
{
regex="^(\/dev\S+) \S+ (\/\S+) \S+ (\S+)"
echo "Device Mount Type"
mount | pcregrep -o1 -o2 -o3 --om-separator=" " "$regex" | sort
} | column -t -o" | "
Мой вывод:
Device | Mount | Type
/dev/md1 | /boot/efi | vfat
/dev/md2 | /boot | xfs
/dev/md4 | /home | xfs
/dev/md5 | /data | xfs
/dev/nvme0n1p2 | /tmp | xfs
То, что я хотел бы видеть:
Device | Mount | Type
---------------+-----------+-----
/dev/md1 | /boot/efi | vfat
/dev/md2 | /boot | xfs
/dev/md4 | /home | xfs
/dev/md5 | /data | xfs
/dev/nvme0n1p2 | /tmp | xfs
Это сложно, потому что ширина столбцов изменяется, и у самого последнего столбца нет разделителя в конце.
Ширина первых двух столбцов может быть определена изпервая строка.Но ширину последнего столбца можно определить, только оценив каждую строку и найдя самую широкую.
Какими простыми способами это можно сделать?