Registrando em um arquivo no formato tabular

0

Estou tentando print algo em um arquivo por meio do script que será enviado como um anexo ao e-mail.

Agora, o que desejo é preservar uma formatação adequada dentro do arquivo. Posso imprimir mantendo o formato tabular semelhante a algo que fazemos em tabelas html.

Suponha que, em um loop, o código esteja anexando algo como:

       'print "|App Name:$1\tRegion:$2\tEnvironment:$3| >> file_attch.dat'

Agora, o tamanho do argumento pode variar, digamos, $ 1 pode ser de 7-10 caracteres, $ 2 é de 5-15 caracteres e $ 3 é de 10 a 20 caracteres.Agora, a linha sucessiva de comprimento de caractere variável faz com que o anexo pareça estranho. p>

Posso fazer algo para reservar 10 primeiros caracteres por $ 1, 15 caracteres por $ 2 e dizer 20 caracteres por $ 3. Tipo de formatação em print que serviria ao propósito.

UPDATE :

Pode ser que eu não tenha enquadrado a pergunta corretamente. Aqui está um exemplo:

    App:PROPIA  Region:silo2   Env:INT
    App:SRO  Region:silo3   Env:SYS

No caso acima, como PROPIA e SRO variam com o comprimento do caractere, o formato tabular não é preservado. Eu queria algo como abaixo:

    App:PROPIA  Region:silo2   Env:INT
    App:SRO     Region:silo3   Env:SYS

Algo como reservar 10 caracteres para o 1º argumento e os próximos 10 para o 2º argumento, independentemente do caráter real

    
por NishantM 06.10.2015 / 07:13

1 resposta

1

printf 'App:%-10s\tRegion:%-15s\tEnv:%-20s\n' "$1" "$2" "$3"

Isso reservaria 10, 15 e 20 caracteres para as três strings e também justificaria à esquerda as strings dentro desse espaço.

Exemplo de script:

set -- PROPIA silo2 INT SRO silo3 SYS
while [ "$#" -gt 0 ]; do
    printf 'App:%-10s\tRegion:%-15s\tEnv:%-20s\n' "$1" "$2" "$3"
    shift 3
done

Saída:

App:PROPIA      Region:silo2            Env:INT
App:SRO         Region:silo3            Env:SYS
    
por 27.04.2018 / 12:29