我有一个大于 4gb 的文件,这对我来说是个坏消息,因为我无法在 notepad++ 中打开文件并使用宏功能来记录和重复一个过程到文件末尾。我想做的是,留下前 20 行文本,然后删除接下来的 80 行,然后重复该过程到文件末尾。
最简单的方法是什么?我正在Linux服务器上查看这些文件,因此运行某种脚本将是最简单的方法,或者也许有人知道在vi中执行此操作的方法?(因此蹩脚的标签)
提前致谢
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