将 octave/matlab 输出写入剪贴板

Posted

技术标签:

【中文标题】将 octave/matlab 输出写入剪贴板【英文标题】:write octave/matlab output to clipboard 【发布时间】:2014-02-22 13:07:43 【问题描述】:

我正在寻找一种将 octave 语句的输出获取到 Windows 剪贴板的方法。

我没有寻找一种方法来手动从 cmd 窗口复制/粘贴文本(我知道这将如何工作)。 iam 也不在寻找完整的 octave 会话的整个输出,这可以通过使用脚本启动 octave 来执行并将所有输出通过管道传输到某个 clip.exe 来获得。 我想从 octave promt 或某个函数或脚本执行的某个语句中捕获输出。

如果有人能提供一些建议,那就太好了。

编辑: 从评论中我了解到 matlab 的剪贴板命令,不幸的是尚未在 octave 中实现。 也许还有其他涉及花哨的system() 电话的想法?

【问题讨论】:

没有比这更容易的了:mathworks.nl/help/matlab/ref/clipboard.html clipboard 八度不可用 谢谢。至少我现在知道如何做到这一点的理论方法。不幸的是,丹尼尔是对的。我想知道为什么剪贴板命令没有出现在我的谷歌搜索中。 【参考方案1】:

好吧,显然实现与 Matlab 非常相似的东西并不困难 - 经过几分钟的摆弄,看看我的新 clipboard.m

function clipboard(data)
if ~ischar(data)
    data = mat2str(data);
end
data = regexprep(data, '\\','\\\\');
data = regexprep(data, '%','%%');
f = tempname;
h = fopen(f, 'w');
fprintf(h, data);
fclose(h);
system(['clip.exe < ' f]);
delete(f);
end

【讨论】:

两个备注:1. 对于 linux,安装 xclip 并使用这个system() 调用:system(['cat ' f ' | xclip -selection clipboard']); 2. 你可能想使用num2str() 而不是mat2str() 来摆脱周围方括号(堆栈溢出审阅者认为将代码分开更合适,我想直接将它们作为 cmets 添加到上面来自 @Notlikethat 的代码 sn-p 中;对不起那个小混乱,另外因为 cmets 不允许漂亮的格式:/)【参考方案2】:

您总是可以通过system 命令调用xclip 之类的东西。 xclip 使用示例见here

以下 Matlab 命令用于将多行内容放入 Mac 上的剪贴板。大概你会用xclip 替换pbcopy,它可以在linux 上运行。

>> system(['echo "line1' 10 'line2' 10 'line3" | pbcopy'])

【讨论】:

是的,但是如何使用呢? system("echo 234.4234 | clip.exe") 当然效果很好,但必须是多行字符串。 嗯。在 Windows 和八度音程 system(['echo "line1' 10 'line2' 10 'line3" | pbcopy']) 上仅输出 "line1 每个新行都被解释为自己的命令,因此您的语句拆分为命令 echo "lineline2line3 | pbcopy 编辑:我错了,似乎只有第一行会被评估。其他行似乎完全被忽略了

以上是关于将 octave/matlab 输出写入剪贴板的主要内容,如果未能解决你的问题,请参考以下文章

清除剪贴板以禁止未经授权的复制,插入消息?

将剪贴板输出到OSX命令行中的文件

异步剪贴板 API“ClipboardItem 未定义” - Reactjs 将图像复制到剪贴板

批处理将字符串输出到Windows剪贴板

C#搜索存储在剪贴板中的单词并将搜索到的单词输出到剪贴板

C#winform 剪贴板中的EXCEL文档,存入datatable中