我有一个(虚拟)文件,如下所示:
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> window1.txt
但是我不知道如何在所有文件上应用这个,并重叠。
提前致谢。
答案 0 :(得分:2)
这可能对你有用(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
是您选择的文件名,其中会附加数字(参见man split)。