Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 使用sed提取具有重叠的行范围_Macos_Bash_Unix_Sed_Awk - Fatal编程技术网

Macos 使用sed提取具有重叠的行范围

Macos 使用sed提取具有重叠的行范围,macos,bash,unix,sed,awk,Macos,Bash,Unix,Sed,Awk,我有一个(虚拟)文件,如下所示: 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 我需要一个命令,该命令将为我提供不同的文件,这些文件由每四行提取一行和一行重叠的行组成。所以我会有这样的东西: 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 这是我得到的(对不起,不多): tail-n+2 | sed-n1,4p>window1.

我有一个(虚拟)文件,如下所示:

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
我需要一个命令,该命令将为我提供不同的文件,这些文件由每四行提取一行和一行重叠的行组成。所以我会有这样的东西:

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
这是我得到的(对不起,不多):

tail-n+2 | sed-n1,4p>window1.txt

但我不知道如何在所有的文件上应用这个,有重叠

提前感谢。

这可能适合您(GNU使用和拆分):

编辑:

要使此可编程,请使用:

sed -nr ':a;$!{N;s/[^\n]+/&/4;Ta};p;$q;s/.*((\n[^\n]*){2})$/\1/;D' file | 
split -dl4 file-name-prefix
其中,
4
是每个文件的行数,
2
是重叠行数


文件名前缀
是您选择的文件名,将附加数字(请参见man split)。

那么您希望一个文件的长度为1到4,然后是第二个文件的长度为3到6,依此类推?@fedorqui,是的,确切地说是这样,那么标题又如何呢,它必须在任何特定的文件中吗?我忘了,我还希望每个窗口都保存在一个文件中。否,我不需要标题,但每个箱子都应该存储在一个新的纺织品中,例如windows1.txt、windows2.txt等。嗨,波通,它工作了。我有不同的文件名:x00,x01,x02。。。有没有办法用不同的名字保存这些文件?你能解释一下吗?如果我想改变参数,那么它会每隔一个数字提取一次,并有不同的重叠。