我有一个 10GB 的 CSV 文件,我正在尝试从中剪切选择输出。目前我有以下内容,但由于它的大小它消耗(方式)太多资源,所以我正在寻找优化它。
#!/bin/bash
FILE=data.txt
FILEPATH=/home/user/
if [[ -z $1 ]]; then
echo "No search parameter specified. Specify one when running this."
fi
echo "Searching $FILEPATH/$FILE for $1.. this may take a while."
echo ""
while IFS= read -r LINE;
do
# Grep for $1 and cut select columns
grep $1 | cut -d"," -f7,9,15,16,19,22,23,24
done
输入文件的示例行如下所示:
结果:key=value1,error=0,command=SetOperator|SOURCE: file=/home/user/logs/current,start_date=20130128,
我想做的是在文件中搜索任何值,并让它从找到结果的每一行返回(剪切版本)结果。
例如,搜索“20130128”应返回:
SetOperator,value1,20130128,
这意味着我需要同时处理 command 和 equals 作为分隔符。
我环顾了 SO(即this)并花了一些 Google-fu,虽然我发现“读取”速度很慢并且没有针对诸如此类的大文件进行优化是普遍接受的;我没有找到很多替代方案。
你会推荐我用什么?
谢谢!