2013-04-12 40 views
1

以下grep語句按預期工作。 但它需要大量的時間,如果文件大小太大(40GB)從大文件中選擇數據

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

1)是否有任何其他的方式,迅速獲得從該文件中所有的「INSERT」語句的列表?

2)是否有任何命令快速刪除該文件的前100行?

+0

你的語言環境是什麼? 'echo $ LANG' – devnull

+0

是你的問題1和2對於同一個任務或者他們是兩個任務? – Kent

+0

#本地是#en_US.UTF-8 ##問題1和2對於同一任務。我的INSERT語句在第100行之後開始 – shantanuo

回答

1

你可以字符串比較,而不是一個正則表達式匹配,但與40GB不會有任何魔法命令你還是要檢查每一行:

$ awk '$1=="INSERT"' test.txt > new.txt 

至於第二個問題,使用sed

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

您是否正在使用主軸磁盤進行此操作?如果這樣給SSD一試。或者如果你負擔得起,可以讓一臺機器有足夠的內存來適應整個文件。

1

的第一個操作要快很多方式如下:

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

(假設您目前正在使用的語言環境與UTF-8支持)

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

您可以將進程發送到後臺與「&」,然後繼續工作。使用ps命令檢查後臺進程的狀態。