我有一个名为goodfile. 可以说内容是
badline
goodline
badline
goodline
badline
badline
在 Windows 机器上,我想过滤此文件以在读取它之前仅获取“goodline”以节省内存成本。值得庆幸的是,附带的 rtools 安装grep应该允许我这样做。我应该能够做到
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 机器上system使用常规grep的 R 进行相同的调用,它就可以工作,所以我看不出问题是什么。
我能够找到另一种方法来获取文件
system2(grep,
args = c('goodline','goodfile'),stderr = 'betterfile',stdout = 'betterfile')
但仍然很好奇为什么管道不起作用