perl script para manipular a saída (gerada a partir de uma linha de comando) [fechada]

0

atual stuation- eu corro esta linha:

Xxxcommand | mail -s 'test on' [email protected]

então eu terei a saída como abaixo no meu e-mail

Name Files(n) Space Calculation
Adam 12345 12345 space/files(n)
Becky 45689 8987
Maryanne 5598 7895

Eu tenho alguns cálculos para fazer, então algumas colunas extras são necessárias . É bagunçado. Então, quero que eles sejam alinhados de acordo com a coluna do meu script perl. Além disso, adicione uma coluna extra para cálculo com base no valor de outras colunas.

Minha meta final: executando meu script perl no linux, o que "pegaria" minha saída do comando, formatando-a bem. (os dados seriam diferentes toda vez, então eu quero fazer isso por apenas uma vez, não para editar toda vez que eu pegar a saída de dados manualmente como copiar e colar dados no perl e formatá-los um por um)

if everything works out, when I run my perl script in linux. (that format the output from the command), I will receive an email with the nicely formatted output.
(**Im sorry but idk how to format the styling here to make it aligned with column header)

Name Files(n) Space Calculation
Adam 12345 12345 space/files(n)
Becky 45689 8987
Maryanne 5598 7895

Então, minha pergunta principal é: como eu escrevo script perl que pode manipular a saída? Devo colocar a saída em um arquivo de texto no linux primeiro?

Porque eu não consigo ver como posso escrever o script perl que pode formatar ou adicionar colunas à saída antes de enviar como e-mail.

Qualquer conselho fornecido seria apreciado. Obrigado.

    
por Santa 21.03.2017 / 02:25

2 respostas

1

você pode tentar este comando awk?

$ xxxcommand | awk 'NR==1{printf("%-10s%-10s%-10s%-10s\n",$1,$2,$3,"calculation")}NR>1{printf("%-10s%-10s%-10s%-10s\n",$1,$2,$3,$2/$3)}' | mail_command
Name      Files(n)  Space     calculation
Adam      12345     12345     1
Becky     45689     8987      5.0839
Maryanne  5598      7895      0.709056
    
por 21.03.2017 / 03:42
0

Entre seus comandos Xxxcommand e mail -s... , faça o seguinte:

Xxxcommand |
sed -e '
   1i\
.TS\
tab( );\
c c c c\
l n n n.
   $a\
.TE
' | tbl - |  nroff -Tascii -ms | grep \. |
mail -s 'test on' [email protected]

N.B .: O c refere-se a colunas centralizadas, l a alinhado à esquerda, & n para colunas alinhadas numericamente. Modifique seus números para se adequar ao número de colunas necessário.

    
por 21.03.2017 / 08:04