Sed 从大文件中选择数据

Sed 从大文件中选择数据,sed,awk,grep,cut,Sed,Awk,Grep,Cut,下面的grep语句按预期工作。 但如果文件大小太大(40GB),则需要花费大量时间 1) 有没有其他方法可以快速从该文件中获取所有“INSERT”语句的列表 2) 是否有任何命令可以快速从该文件中删除前100行?您是在主轴盘上执行此操作的吗?如果是这样,请尝试一下SSD。或者,如果你能负担得起,那就买一台有足够内存的机器,把整个文件都放在里面。你是用主轴盘来做这件事的吗?如果是这样,请尝试一下SSD。或者,如果你能负担得起的话,你可以买一台有足够内存的机器来容纳整个文件。你可以用字符串比较来代替

下面的grep语句按预期工作。 但如果文件大小太大(40GB),则需要花费大量时间

1) 有没有其他方法可以快速从该文件中获取所有“INSERT”语句的列表


2) 是否有任何命令可以快速从该文件中删除前100行?

您是在主轴盘上执行此操作的吗?如果是这样,请尝试一下SSD。或者,如果你能负担得起,那就买一台有足够内存的机器,把整个文件都放在里面。

你是用主轴盘来做这件事的吗?如果是这样,请尝试一下SSD。或者,如果你能负担得起的话,你可以买一台有足够内存的机器来容纳整个文件。

你可以用字符串比较来代替regexp匹配,但如果是40GB,就不会有任何神奇的命令,你仍然需要检查每一行:

$ awk '$1=="INSERT"' test.txt > new.txt  
至于第二个问题,请使用sed:

$ sed -i '1,100{d;q}' test.txt

您可以使用字符串比较来代替regexp匹配,但对于40GB,将不会有任何神奇的命令,您仍然需要检查每一行:

$ awk '$1=="INSERT"' test.txt > new.txt  
至于第二个问题,请使用sed:

$ sed -i '1,100{d;q}' test.txt

第一次操作应以以下方式快得多:

LANG=en_US grep '^INSERT' test.txt > new.txt

(假设您当前使用的区域设置支持
UTF-8

第一个操作应通过以下方式更快:

LANG=en_US grep '^INSERT' test.txt > new.txt
(假设您当前使用的区域设置支持
UTF-8

您可以使用“&”将流程发送到后台,然后继续您的工作。使用ps命令检查后台进程的状态


您可以使用“&”将流程发送到后台,然后继续您的工作。使用ps命令检查后台进程的状态。

您的区域设置是什么
echo$LANG
您的问题1和2是针对同一任务还是针对两个任务?#本地是#en#u US.UTF-8##问题1和2针对同一任务。我的INSERT语句在前100行之后开始可能重复到:您的语言环境是什么
echo$LANG
您的问题1和2是针对同一任务还是针对两个任务?#本地是#en#u US.UTF-8##问题1和2针对同一任务。我的INSERT语句在前100行之后开始可能重复到: