2

我有一个大于 4gb 的文件,这对我来说是个坏消息,因为我无法在 notepad++ 中打开文件并使用宏功能来记录和重复一个过程到文件末尾。我想做的是,留下前 20 行文本,然后删除接下来的 80 行,然后重复该过程到文件末尾。

最简单的方法是什么?我正在Linux服务器上查看这些文件,因此运行某种脚本将是最简单的方法,或者也许有人知道在vi中执行此操作的方法?(因此蹩脚的标签)

提前致谢

4

2 回答 2

9

awk可以很容易地做到这一点:

awk '(NR-1)%100 < 20' bigfile.txt
于 2013-03-05T21:37:08.297 回答
2

我会选择 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
于 2013-03-05T21:41:44.367 回答