我在一个目录中的for循环中通过zgrep文件调用*.gz。
由于日志文件很大(每个文件大约1GB,大约30个文件),命令需要很长时间。
我在/tmp文件夹中看到了几个未压缩的文件,zgrep正在创建这些文件。
我想知道,zgrep是否重用了它自己的未压缩文件?还是每次解压缩(即for循环的下一次迭代)?
脚本可以
#!/bin/bash
while read -r request;
do
zgrep $request */log.prefix.* | grep ..... <complex command>
read < /tmp/allRequestIds.txt有没有优化zgrep的提示?
发布于 2018-03-12 14:35:04
zgrep PATTERN FILE本质上与zcat FILE | grep PATTERN或其某些变体相同。如果在循环中运行它,它将不会重用以前未压缩的文件。
为了加快处理速度,允许zgrep直接从/tmp/allRequestIds.txt文件读取模式:
zgrep -f /tmp/allRequestIds.txt */log.prefix.*如果您想要固定的字符串模式匹配而不是正则表达式匹配,也可以使用-F:
zgrep -F -f /tmp/allRequestIds.txt */log.prefix.*https://unix.stackexchange.com/questions/429742
复制相似问题