我有一個大於4GB的文件,這對我來說是個壞消息,因爲我無法在記事本++中打開該文件,並使用宏功能記錄並重復一個進程文件的結尾。 我想要做的就是說,保留前20行文本,然後刪除下一個80行,然後將該過程重複到文件末尾。最簡單的方法刪除一段文字,n次
最簡單的方法是什麼? 我在linux服務器上查看這些文件,所以運行某種腳本將是最簡單的方法,或者也許有人知道在vi中這樣做的方法? (因此跛腳taging)
在此先感謝
我有一個大於4GB的文件,這對我來說是個壞消息,因爲我無法在記事本++中打開該文件,並使用宏功能記錄並重復一個進程文件的結尾。 我想要做的就是說,保留前20行文本,然後刪除下一個80行,然後將該過程重複到文件末尾。最簡單的方法刪除一段文字,n次
最簡單的方法是什麼? 我在linux服務器上查看這些文件,所以運行某種腳本將是最簡單的方法,或者也許有人知道在vi中這樣做的方法? (因此跛腳taging)
在此先感謝
awk
可以做到這一點很容易:
awk '(NR-1)%100 < 20' bigfile.txt
我會去的awk的解決方案,但這裏是你可以做同樣的事情的一種方式SED:
seq 20 | sed 's/$/~100p/' | sed -nf - bigfile.txt
測試:
seq 20 | sed 's/$/~100p/' | sed -nf - <(seq 200)
輸出:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
爲什麼你想出了首先用(NR-1)%100 <20但不NR%100 <= 20。 :) +1不錯的解決方案! – Kent 2013-03-05 21:42:10
@Kent考慮第100行。我們想刪除它,但是'NR%100 <= 20'會保留它。 – Kevin 2013-03-05 21:43:27
@凱文正確!沒有想到0的情況...^_^ – Kent 2013-03-05 21:47:59