提取一系列行,并使用 sed 进行重叠



我有一个看起来像这样的(虚拟)文件:

header
1
2
3
4
5
6
7
8
9
10

我需要一个命令,它可以为我提供由每四行提取的行组成的不同文件,其中一行重叠。所以我会有这样的东西:

1
2
3
4
3
4
5
6
5
6
7
8
7
8
9
10

所以这是我得到的(不多,对不起):

尾巴 -n + 2 | sed -n 1,4p>窗口1.txt

但是我不知道如何将它应用于所有文件,并有重叠。

提前谢谢。

这可能

对你有用(GNU sed 和 split):

sed -nr '1{N;N;N};:a;p;$q;s/^.*n.*n(.*n.*)$/1/;N;N;ba' file | split -dl4

编辑:

要使此可编程使用:

sed -nr ':a;$!{N;s/[^n]+/&/4;Ta};p;$q;s/.*((n[^n]*){2})$/1/;D' file | 
split -dl4 file-name-prefix

其中4是每个文件的行数,2是重叠行数。

File-name-prefix是您选择的文件名,它将附加数字(请参阅人员拆分)。

最新更新