печать строковых данных в формате таблицы в Linux

Хотя самым простым решением является использование env вместо set , env не 'не передавать все существующие переменные, а только те, которые будут переданы любому процессу, запущенному с env (так что никаких неэкспортируемых переменных, например). Другой подход заключается в поиске в выводе набора строк, содержащих строку без пробелов, = , а затем другую строку символов без пробелов:

set | grep -E '^\S+=\S' 

Однако это пропустит любые переменные, для которых задано многострочное значение (например, IFS , значение по умолчанию которого включает \ n ).

2
28.08.2017, 22:30
1 ответ

Я закончил -следующим awkскриптом.

awk '{gsub(/ {1,5}/,"\t|")}1' infile.txt | \
awk -F'|' 'NR>1{for(i=1;i<=NF;i++) if ($i=="\t") c++;
           printf("%*s",(c*8),"\t-");
           for (fill=1;fill<=length($0)+c;fill++)printf "-";
           printf("\n%s\n",$0);c=0;next} {print $0}'

Вывод:

col1    |col2   |col3   |subcol1        |subcol2        |subcol3
                        -----------------------------------     
        |       |       |subcol4        |subcol5        |subcol6
                --------------------------------------          
        |       |col4   |subcol7        |subcol8        |subcol9
                        -------------------------------------   
        |       |       |subcol10       |subcol11       |subcol2
2
27.01.2020, 22:09

Теги

Похожие вопросы