以下 grep 语句按预期工作。但是如果文件太大(40GB)会花费很多时间
grep '^INSERT' test.txt > new.txt
1)有没有其他方法可以快速从该文件中获取所有“INSERT”语句的列表?
2) 是否有任何命令可以快速从该文件中删除前 100 行?
sed -n '1,100\!{/^INSERT/p}' test.txt > new.txt &
您可以使用“ & ”将进程发送到后台并继续您的工作。使用ps命令检查后台进程的状态。
You could string comparison instead of a regexp match but with a 40GB there won't be any magic command you still have to check every line:
$ awk '$1=="INSERT"' test.txt > new.txt
As for the second question use sed
:
$ sed -i '1,100{d;q}' test.txt
通过以下方式,第一次操作应该更快:
LANG=en_US grep '^INSERT' test.txt > new.txt
(假设您当前正在使用UTF-8
支持的语言环境)
您是在主轴磁盘上执行此操作吗?如果是这样,请尝试使用 SSD。或者,如果您负担得起,请购买一台具有足够 RAM 的机器,以将整个文件放入其中。