Я пытаюсь создать bash-скрипт для проверки заголовков на abaqus include.
Основные используемые функции: grep, echo и column.
Вывод должен быть таблицей с выделенными ошибками (просто проверяйте строки, если строка не верна, я ожидаю, что она напечатает красным.)
Таблица в порядке без форматирования. Как только я начинаю использовать форматирование жирным шрифтом в echo -e, функция столбца перестает работать.
Кто-нибудь знает, как это исправить?
заголовок inc1.inc:
**
** label = AAAAA
** project = /Data/BBB/CCC
** phase = VD
**
таблица без форматирования (как и ожидалось):
submodel label project phase
inc1.inc AAAAA /Data/BBB/CCC VD
inc2.inc YY /Data/ZZ/Z VPP
inc3.inc PPP-23 /Data/OP/HJK22/OK KKKKK
таблица с жирным форматированием первой строки и первого столбца (жирное форматирование не может быть отображено, попробуйте выполнить код в консоли):
submodel label project phase
inc1.inc AAAAA /Data/BBB/CCC VD
inc2.inc YY /Data/ZZ/Z VPP
inc3.inc PPP-23 /Data/OP/HJK22/OK KKKKK
код:
#!/bin/bash
### ========== variables ==========
FORMATRESET="\e[0m"
FORMATBOLD="\e[1m"
FORMATERROR="\e[1;5;48;5;9m"
PATTERNS=("label" "project" "phase")
### ========== functions ==========
HCK () {
echo -e -n "${FORMATBOLD}submodel${FORMATRESET}\t"
for PATTERN in ${PATTERNS[@]}; do
echo -e -n "${FORMATBOLD}${PATTERN}${FORMATRESET}\t"
done
echo
for SUBMODEL in $@; do
echo -e -n "${FORMATBOLD}${SUBMODEL%\*\*}${FORMATRESET}\t"
for PATTERN in ${PATTERNS[@]}; do
FOUND=($(grep "** ${PATTERN}" ${SUBMODEL} | awk '{print $4}'))
echo -e -n "${RESETFORMAT}${FOUND}${RESETFORMAT}\t"
done
echo
done
}
HCKwoFORMATTING () {
echo -e -n "submodel\t"
for PATTERN in ${PATTERNS[@]}; do
echo -e -n "${PATTERN}\t"
done
echo
for SUBMODEL in $@; do
echo -e -n "${SUBMODEL%\*\*}\t"
for PATTERN in ${PATTERNS[@]}; do
FOUND=($(grep "** ${PATTERN}" ${SUBMODEL} | awk '{print $4}'))
echo -e -n "${FOUND}\t"
done
echo
done
}
### ========== execution ==========
HCK * |column -t -s $'\t'
echo
HCKwoFORMATTING * | column -t -s $'\t'