命令行 - Windows的awk命令

时间:2018-02-21 02:36:28

标签: r windows awk command-line pipe

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

我在Windows机器上运行。我知道以下命令可以在Apple上实现所需的结果;但是,它不能在我的Windows机器上运行。

awk 'BEGIN{i=0}{i++;if (i%30==2) print $1}' < test.csv

在R中,如果我在Apple上运行此代码,我会得到所需的结果:

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)

显然,我对Windows CLI一无所知,所以有人可以将这个awk命令翻译成Windows语言并解释翻译如何达到预期效果吗?

提前致谢!

UPDATE:

所以我已经下载了Git并且已经成功地使用Git命令行完成了这项任务,但我需要在R中实现它,因为我必须在数千个文件上执行此任务。有人知道如何让R通过Git运行这个命令吗?

1 个答案:

答案 0 :(得分:0)

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)

在Windows上,awk的程序行需要用双引号引起来。由于同一行上的其他双引号,它们被转义。

此外,不需要输入文件前的'<'(我怀疑在苹果机上是否需要它。)