例子:
我有一个包含以下数据的文件:
cvrta2100 Error 404 Fixed
cvrta2111 Licensed Needs Fixing
cvrta2123 Error 404 Fixed
cvrta2333 Licensed Needs Fixing
我用来awk
将此输出打印到 Excel 文件:
awk 'BEGIN{ OFS="|"; print "Hosts|Output|Status"}; NR > 1{print $1, $2, $3, $4, $5, $6, $7, $8, $9;}' input.txt > Output.xls
问题是 - 我只能在单个单元格中获得结果,即“ cvrta2333 Licensed Needs Fixing
”全部打印在单个单元格中。
我的问题:是否可以在不同的单元格中打印每个单词“主机”、“输出”和“状态”,即cvrta2333
(一个单元格)Licensed
(下一个单元格) Needs Fixing
(下一个单元格)
答案1
对于像这样的“简单”列,逗号分隔值可以在 Excel 中很好地打开。
awk 'BEGIN{ OFS=","; print "Hosts,Output,Status"}; NR > 1{print $1, $2, $3, $4, $5, $6, $7, $8, $9;}' input.txt > Output.csv
答案2
如果您在 Excel 中导入文件,则可以使用“文本到表格”功能(或任何名称)使用空格分隔符将行分成列。
我不知道 Excel 将如何反应,但您可以使用以下命令将文件转换为包含制表符或逗号分隔单词的文件t,
$ tr \ \\t < input > output
$ tr \ , < input > output
我会远离 CSV,除非这是唯一让 Excel 满意的一种,因为需要引用日志文件文本中的逗号。