我正在尝试分析一个巨大的文本文件(1.6GB),其数据行如下所示:
20090118025859 -2.400000 78.100000 1023.200000 0.000000 20090118025900 -2.500000 78.100000 1023.200000 0.000000 20090118025901 -2.400000 78.100000 1023.200000 0.000000
我什至不知道有多少行。但我正在尝试按日期拆分文件。左边的数字是一个时间戳(这些行是从 2009 年 1 月 18 日开始的)。
如何根据日期将此文件分成几部分?
我所知道的一切都是grep file '20090118*' > data20090118.dat
,但肯定有一种方法可以一次完成所有日期,对吗?
每个日期的条目数不同,因此使用split
常量将不起作用。
提前致谢,
亚历克斯
假设文件已排序并且日期始终存在,这应该有效:
[另存为
my_splitter
,通过运行使其可执行chmod +x my_splitter
,然后像这样调用它./my_splitter input_file
]它逐行读取输入文件,提取日期并使用它将具有相同日期的行附加到同一文件中。
base_dir
是目标目录,文件格式为<date>.txt
. 注意:现有文件不会被覆盖,由于>>
重定向器会追加新行,因此最好确保目标目录不包含任何形式的文件<date>.txt
。这可能对你有用:
我会使用 {x..y},也许是 y、m、d 级联、shema: