【发布时间】:2019-03-11 13:28:47
【问题描述】:
我收到的数据将在 130GB 到 300GB 的范围内,在一个文件夹中包含 1000 个(可能是数百万)大小为 2KB 到 1MB 的小 .txt 文件。我想有效地解析它们。
我正在研究以下选项(来自 - 21209029]:
-
使用
printf+xargs(后跟egrep&awk文本处理)printf '%s\0' *.txt | xargs -0 cat | egrep -i -v 'pattern1|...|pattern8' | awk '{gsub(/"\t",",")}1' > all_in_1.out -
使用
find+cat(后跟egrep&awk文本处理)find . -name \*.txt -exec cat {} > all_in_1.tmp \; cat all_in_1.tmp | egrep -i -v 'pattern1|...|pattern8' | awk '{gsub(/"\t",",")}1' > all_in_1.out -
使用
for循环for file in *.txt do cat "$file" | egrep -i -v 'pattern1|...|pattern8' | awk '{gsub(/"\t",",")}1' >> all_in_1.out done
以上哪一项最有效?有更好的方法吗?
或者是完全不推荐使用 shell 命令来处理这么多的数据处理(我更喜欢 shell 方式)?
该服务器具有 RHEL 6.5 操作系统和 32 GB 内存和 16 个内核 (@2.2GHz)。
【问题讨论】:
-
您是否有理由无法测试这些不同的方法以确定哪种方法最适合您的需求?
-
@KenWhite ,我将测试这些方法以检查其中最有效的方法,我只是想知道是否有更好的方法。
标签: shell parsing rhel memory-efficient