R 命令行-用于Windows的Awk命令

R 命令行-用于Windows的Awk命令,r,windows,awk,command-line,pipe,R,Windows,Awk,Command Line,Pipe,我有一个包含数百万行的CSV文件。在R中打开文件之前,我想打开与该文件的连接并过滤不必要的行。具体来说,我想从第二行开始导入每30行 我在Windows机器上操作。我知道下面的命令在苹果上实现了预期的结果;但是,它在我的Windows计算机上不工作 awk 'BEGIN{i=0}{i++;if (i%30==2) print $1}' < test.csv awk'开始{i=0}{i++;如果(i%30==2)打印$1}'

我有一个包含数百万行的CSV文件。在R中打开文件之前,我想打开与该文件的连接并过滤不必要的行。具体来说,我想从第二行开始导入每30行

我在Windows机器上操作。我知道下面的命令在苹果上实现了预期的结果;但是,它在我的Windows计算机上不工作

awk 'BEGIN{i=0}{i++;if (i%30==2) print $1}' < test.csv
awk'开始{i=0}{i++;如果(i%30==2)打印$1}'
在R中,如果我在苹果上运行此代码,我将得到所需的结果:

write.csv(1:100000, file = "test.csv")
file.pipe <- pipe("awk 'BEGIN{i=0}{i++;if (i%30==2) print $1}' < test.csv")
res <- read.csv(file.pipe)
write.csv(1:100000,file=“test.csv”)
file.pipe
write.csv(1:100000,file=“test.csv”)

file.pipe Idk,如果这是您正在寻找的,但是类似这样的工具为您提供了Windows机器上的大部分Linux/cmd行功能。因此,如果这是一个一次性的东西,您可能只需要它,那么“windows cli”是什么意思?要么您已经安装了
awk
(通过、cygwin(如patrick所述)或本机安装),要么您需要找到不同的程序。顺便说一句,稍微短一点:
awk'NR%30==2'
。。。我今天才发现,巧合?一个更轻的解决方案是git for windows,它包括
awk
sed
,以及其他一些类似的伟大的小工具。试试
系统(“C:/PROGRA~1/git/usr/bin/awk.exe…”)
。然后卸载并重新安装git for windows,并启用“添加到路径”的第三个选项。然后关闭并重新启动R。只需建议
readr
包。您可以读取文件的块,例如10000行,并对该子集进行筛选(任何类型的筛选),然后将其添加到最终数据帧中<在我看来,code>readr
函数速度非常快,而reading chunks选项提供了在加载完整数据之前进行过滤的可能性。
write.csv(1:100000, file = "test.csv")
file.pipe <- pipe("awk \"BEGIN{i=0}{i++;if (i%30==2) print $1}\" test.csv")
res <- read.csv(file.pipe)