我有大约 2 TB 的数据文件格式如下
12/20/2015 somerandomdata
12/20/2015 somerandomdata
12/20/2015 somerandomdata
12/20/2015 somerandomdata
12/21/2015 somerandomdata
12/21/2015 somerandomdata
12/21/2015 somerandomdata
12/21/2015 somerandomdata
12/22/2015 somerandomdata
12/22/2015 somerandomdata
12/22/2015 somerandomdata
12/22/2015 somerandomdata
Run Code Online (Sandbox Code Playgroud)
我想删除某些日期。例如,我可能想为 12/20/2015 和 12/22/2015 生成文件。
12/20/2015 somerandomdata
12/20/2015 somerandomdata
12/20/2015 somerandomdata
12/20/2015 somerandomdata
Run Code Online (Sandbox Code Playgroud)
和
12/22/2015 somerandomdata
12/22/2015 somerandomdata
12/22/2015 somerandomdata
12/22/2015 somerandomdata
Run Code Online (Sandbox Code Playgroud)
我可以很容易地使用grep做到这一点,在linux做grep '12/20/2015' filein > fileout20和grep '12/22/2015' filein > fileout22,但这样做有两个问题。
首先,更重要的是,它需要遍历输入文件两次以生成输出。每个文件有 2 TB 数据和多个日期,这是一个重大问题。(相关:我也不希望解决方案将文件分解为每个可能的日期,因为我不想要大多数日期的数据,每个输入文件中只有大约 10%)
第二个问题是我需要在 Windows 上运行它。(我意识到大多数 linux 命令都具有使用 GnuWin32 等的 Windows 等价物,所以这不是什么大问题)
有什么方法可以有效地做到这一点吗?
编辑:到目前为止的答案有两个问题之一,所以我会澄清一点。第一个问题是我不想多次遍历每个输入文件。因此,循环遍历每个日期是行不通的。这是因为如果我有 200 …