У меня есть файл с именем 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
Это сообщение об ошибке и "лучше файл" не генерируется.
Если я беру ту же команду и запускаю ее в командной строке, она просто работает, если я делаю тот же самый вызов system
с обычным grep
на R на машине linux, она просто работает, так что я могуНе вижу, в чем проблема.
Мне удалось найти альтернативный способ получить файл, выполнив
system2(grep,
args = c('goodline','goodfile'),stderr = 'betterfile',stdout = 'betterfile')
, но все же любопытно, почему канал не работает