Para colunas "simples" como essa, os valores separados por vírgula abrirão bem no Excel.
awk 'BEGIN{ OFS=","; print "Hosts,Output,Status"}; NR > 1{print $1, $2, $3, $4, $5, $6, $7, $8, $9;}' input.txt > Output.csv
Exemplo:
Eu tenho um arquivo com os seguintes dados:
cvrta2100 Error 404 Fixed
cvrta2111 Licensed Needs Fixing
cvrta2123 Error 404 Fixed
cvrta2333 Licensed Needs Fixing
Estou usando awk
para imprimir essa saída em um arquivo do Excel:
awk 'BEGIN{ OFS="|"; print "Hosts|Output|Status"}; NR > 1{print $1, $2, $3, $4, $5, $6, $7, $8, $9;}' input.txt > Output.xls
O problema é que só consigo obter os resultados em uma única célula, ou seja, " cvrta2333 Licensed Needs Fixing
" é impresso em uma única célula.
Minha pergunta: É possível imprimir cada palavra Hosts, Output e Status em uma célula diferente, por exemplo, cvrta2333
(uma célula) Licensed
(próxima célula) Needs Fixing
(próxima célula)
Se você importar o arquivo no Excel nativamente, poderá usar a função "texto para tabela" (ou o que for chamado) para dividir as linhas em colunas usando um delimitador de espaço.
Não sei como o Excel reagirá, mas você pode converter o arquivo em um com palavras delimitadas por tabulações ou vírgulas usando tr ,
$ tr \ \t < input > output
$ tr \ , < input > output
Eu ficaria longe do CSV, a menos que fosse o único que deixasse o Excel feliz, por causa da necessidade de citar as vírgulas que fazem parte do texto do arquivo de log.
Tags bash awk scripting shell-script