Matlab执行UNIX命令在较新版本中不起作用

Matlab执行UNIX命令在较新版本中不起作用,matlab,unix,Matlab,Unix,我有一个脚本使用这行代码: system(['cat ' inputfile ' | tr -d ''\000'' | tr -d ''\015'' >& tempfile.txt']); 浏览文本文件并删除一些特殊字符,然后将其放入临时文件 这一行代码在Matlab2012中有效,但在2017年无效,因为它会导致此错误: tr: Illegal byte sequence cat: stdout: Broken pipe 有人知道如何回避这个问题吗?谢谢大家! tr可能不支持

我有一个脚本使用这行代码:

system(['cat ' inputfile ' | tr -d ''\000'' | tr -d ''\015'' >& tempfile.txt']);
浏览文本文件并删除一些特殊字符,然后将其放入临时文件

这一行代码在Matlab2012中有效,但在2017年无效,因为它会导致此错误:

tr: Illegal byte sequence
cat: stdout: Broken pipe

有人知道如何回避这个问题吗?谢谢大家!

tr可能不支持编码格式,请尝试更改区域设置(请参阅):


我不确定,但你可能需要避开反斜杠。MATLAB现在可以识别八进制常数,这可能是您的代码不再工作的原因。我建议您删除
系统
调用,只打印出传递给它的合成字符串。这会给你一个错误的提示。我在ubuntu 16.04上使用2017b没有错误。我尝试了inputfile=which('ls.m');并且tempfile.txt创建时没有错误。可能
inputfile
包含空格?考虑用引文括起来。
system(['cat ' inputfile  ' | LC_ALL="C" tr -d ''\000''''\015'' >& tempfile.txt']);