我想使用sed打印n行,跳过n行,打印n行,直到文本文件结束,从某一行开始。例如,在第4行,打印5-9,跳过10-14,打印15-19等
从文件中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20我想要
5
6
7
8
9
15
16
17
18
19
25
26
27
28
29
35
36
37
38
39
etc如果我尝试
sed -n '4~5p' FILE.txt > NEWFILE.txt 将会给我
4.
9
14
19
我可不想这样。
发布于 2016-02-11 12:36:40
我不认为在sed中有一个简单的方法可以做到这一点,因为它不能做算术。awk更好:
awk 'NR%10 >= 5' FILE.txt > NEWFILE.txtNR%10是以10为模的记录号(即行号的最后一位)。因此,这将打印行号的最后一位数至少为5: 5-9、15-19、25-29等的任何行。
发布于 2016-02-11 12:45:00
sed用于单个行上的简单替换,仅此而已。只需使用awk:
$ awk '!(NR%5){f=!f} f' file
5
6
7
8
9
15
16
17
18
19发布于 2016-02-11 12:56:16
这是一个sed的解决方案。试着弄清楚这一点;)
sed -n 'n ; n ; n ; n ; n ; h ; n ; H ; n ; H ; n ; H ; n ; H ; x ; p' filehttps://stackoverflow.com/questions/35330807
复制相似问题