1

以下 grep 语句按预期工作。但是如果文件太大(40GB)会花费很多时间

grep '^INSERT' test.txt > new.txt

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

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

4

4 回答 4

2
 sed -n '1,100\!{/^INSERT/p}' test.txt > new.txt &

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

于 2013-04-12T10:22:35.980 回答
1

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
于 2013-04-12T08:45:16.070 回答
1

通过以下方式,第一次操作应该更快:

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

(假设您当前正在使用UTF-8支持的语言环境)

于 2013-04-12T08:49:50.843 回答
1

您是在主轴磁盘上执行此操作吗?如果是这样,请尝试使用 SSD。或者,如果您负担得起,请购买一台具有足够 RAM 的机器,以将整个文件放入其中。

于 2013-04-12T08:43:50.763 回答