我有一个名为goodfile
的文件。可以说内容是
badline
goodline
badline
goodline
badline
badline
在Windows机器上,我想在读取文件之前过滤此文件以仅获取“好行”,以节省内存成本。值得庆幸的是,grep
附带了rtools安装,应该可以让我执行此操作。我应该能够做到
if(!pkgbuild::has_rtools()){
stop('install rtools')
}
rtoolsPath = pkgbuild::rtools_path()
grep = file.path(rtoolsPath,'grep.exe')
command = paste(grep, "goodline goodfile")
system(command)
并获得
goodline
goodline
但是,当我尝试通过
将输出通过管道传输到文件时command = paste(grep, "goodline goodfile > betterfile")
system(command)
我明白了
goodfile:goodline
goodfile:goodline
/usr/bin/grep: >: No such file or directory
/usr/bin/grep: betterfile: No such file or directory
此错误消息和“更好的文件”不会生成。
如果我使用相同的命令并在命令行上运行它,那么它就可以工作,如果我在Linux机器上的R中用常规的system
进行相同的grep
调用,那么它就可以工作,所以我看不清楚是什么问题。
我能够找到一种替代的方式来获取文件
system2(grep,
args = c('goodline','goodfile'),stderr = 'betterfile',stdout = 'betterfile')
但仍然好奇为什么管道不起作用