以下grep語句按預期工作。 但它需要大量的時間,如果文件大小太大(40GB)從大文件中選擇數據
grep '^INSERT' test.txt > new.txt
1)是否有任何其他的方式,迅速獲得從該文件中所有的「INSERT」語句的列表?
2)是否有任何命令快速刪除該文件的前100行?
以下grep語句按預期工作。 但它需要大量的時間,如果文件大小太大(40GB)從大文件中選擇數據
grep '^INSERT' test.txt > new.txt
1)是否有任何其他的方式,迅速獲得從該文件中所有的「INSERT」語句的列表?
2)是否有任何命令快速刪除該文件的前100行?
你可以字符串比較,而不是一個正則表達式匹配,但與40GB不會有任何魔法命令你還是要檢查每一行:
$ awk '$1=="INSERT"' test.txt > new.txt
至於第二個問題,使用sed
:
$ sed -i '1,100{d;q}' test.txt
您是否正在使用主軸磁盤進行此操作?如果這樣給SSD一試。或者如果你負擔得起,可以讓一臺機器有足夠的內存來適應整個文件。
的第一個操作要快很多方式如下:
LANG=en_US grep '^INSERT' test.txt > new.txt
(假設您目前正在使用的語言環境與UTF-8
支持)
sed -n '1,100\!{/^INSERT/p}' test.txt > new.txt &
您可以將進程發送到後臺與「&」,然後繼續工作。使用ps命令檢查後臺進程的狀態。
你的語言環境是什麼? 'echo $ LANG' – devnull
是你的問題1和2對於同一個任務或者他們是兩個任務? – Kent
#本地是#en_US.UTF-8 ##問題1和2對於同一任務。我的INSERT語句在第100行之後開始 – shantanuo