Você tem printf "%-50s : %10s\n" "$DATA2" "$DATA1"
, o que me diz que no total você terá uma linha de 63 caracteres (incluindo espaços e :
). Assim, vamos querer printf "%63s"
string. A abordagem simples é imprimir espaços e depois convertê-los todos em -
da mesma forma
printf "%60s" " " | tr ' ' '-'
Nós certamente poderíamos usar a abordagem mais simples , mas é específica de bash
. Podemos, no entanto, modificá-lo ligeiramente:
printf "=%.0s" $(seq 1 63)
Isso funcionará em qualquer shell e sistema que tenha seq
instalado.
Assim, imprima o cabeçalho antes de entrar no loop. Por exemplo, aqui está um caso muito simples:
$ cat ./print_header.sh
#!/bin/bash
# print header
printf "%-50s : %10s\n" "Name" "Department"
# print separator
printf "=%.0s" $(seq 1 63)
# insert a newline
printf "\n"
# and this is where your for loop would begin.
# just for the sake of example, there's only one line
printf "%-50s : %10s\n" "John Doe" "IT,Infra"
$ ./print_header.sh
Name : Department
===============================================================
John Doe : IT,Infra