Unix excel是否可以执行cmd命令,然后将输出放在单元格中?
这就是我要做的。我有一个程序执行时间的日志文件。通常,如果我想快速找到一个程序的函数已经执行了多少个条目,平均/最大执行是使用grep、gawk、wc、sort和uniq的组合 i、 e。 最大执行时间:Unix excel是否可以执行cmd命令,然后将输出放在单元格中?,unix,excel,cmd,gnu,vba,Unix,Excel,Cmd,Gnu,Vba,这就是我要做的。我有一个程序执行时间的日志文件。通常,如果我想快速找到一个程序的函数已经执行了多少个条目,平均/最大执行是使用grep、gawk、wc、sort和uniq的组合 i、 e。 最大执行时间: grep "Execution time " console.log | gawk "{print "$8", "$11"}" | grep "[FUNC NAME]" | gawk "{print "$1"}" | gawk "max==0 || $1 > max{max=$1}END
grep "Execution time " console.log | gawk "{print "$8", "$11"}" | grep "[FUNC NAME]" | gawk "{print "$1"}" | gawk "max==0 || $1 > max{max=$1}END{print max}"
我想知道的是提取日志文件中找到的所有函数max/average execution time和events,并将数据放入excel文件中。我希望格式如下:
(我在命令提示符下手动执行此操作以获取这些值)
如何在Excel的VBA中执行这些操作?经过一些搜索和反复尝试,我终于在Excel VBA中实现了我想要的功能 我是这样解决的: 我创建了3个名为CustomMax、CustomAve、CustomCount的自定义函数 下面是CustomMax的示例代码:(注意,我硬编码了文件的路径名,但您可以自己设置) CustomMax:
Function CustomMax(var1 As String)
Dim s As Long, a() As String
s = CreateObject("Wscript.Shell").Exec("cmd.exe /c" & "grep ""Execution time "" ""C:/Users/MDuh/AppData/Local/Red 5 Studios/Firefall/console.log"" | gawk ""{print ""$8"", ""$11""}"" | grep -w """ & var1 & """| gawk ""{print ""$1""}"" | gawk ""max==0 || $1 > max{max=$1}END{print max}""").StdOut.ReadLine
CustomMax = s
End Function
这将创建一个shell对象,并使用以下命令执行命令行:
grep "Execution time " console.log | gawk "{print "$8", "$11"}" | grep -w "[NAME]" | gawk "{print "$1"}" | gawk "max==0 || $1 > max{max=$1}END{print max}"
然后使用Stdout.ReadLine捕获输出。需要s变量,因此工作表中的输出是数字,而不是字符串
该方法的一些警告如下:
- 每次函数调用都会打开一个CMD提示符,然后突然将其关闭
- 它将在您每次执行更新工作表的操作时重新计算,因此您可能希望手动设置重新计算
*.csv
)读入Excel?我正在通过GnuWin和Unixtoolsoval在windows中运行linux工具。通常,您可以先运行命令,将输出重定向到文件(使用Google:站点:stackoverflow.com vba wscript.shell
),然后读取和解析文本文件(使用Google:site:stackoverflow.com excel vba读取文本文件
)并将值分布在整个工作表中(Google:site:stackoverflow.com excel vba设置单元格值
可以给您一些提示)。一旦您准备好一些代码,将其添加到问题中,您可能会得到一些更精确的答案