我正在尝试创建bash脚本以检查abaqus包含的标头。 主要使用的功能是grep,echo和column。
输出应该是突出显示错误的表(仅检查字符串,如果字符串不正确,我希望它显示为红色。) 表很好,无需格式化。一旦我开始在echo -e中使用粗体格式,列函数就会停止工作。
有人知道如何解决吗?
header 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'