bash используя столбец в отформатированном тексте - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь создать 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...