Text-Processing

從大文本文件中刪除開頭行的快速方法

  • February 16, 2017

我有一個大文本文件(>500GB),我能找到的所有方式(sed/tail 和其他)都需要將 500GB 的內容寫入磁碟。有沒有辦法在不將 500GB 寫入磁碟的情況下快速刪除前幾行?

您可以使用sed以下選項刪除行-i

$ cat foo.txt
bar
baz
lorem
$ sed -i '1d' foo.txt
$ cat foo.txt
baz
lorem

您還可以刪除一系列行;例如sed -i '1,4d' foo.txt將刪除第 1-4 行。

編輯:正如唐在評論中指出的那樣,該-i選項仍會創建一個副本。

通過以這種方式使用 tail 命令:

# tail -n +<lines to skip> filename

例如:

tail -n +1000 hugefile.txt > hugefile-wo-the-first-1000-lines.txt

僅此而已。-有關更多資訊: https ://es.wikipedia.org/wiki/Tail

順便說一句:如果有人告訴您這與您想要做的完全相反,請不要上當,我已經對其進行了測試:

$ tail -n +3 /tmp/test 
3
4
5

$ cat /tmp/test 
1
2
3
4
5

引用自:https://unix.stackexchange.com/questions/345599