1

到目前为止我有这个:

sed -n '0,10p' yourfile > newfile

但它不起作用,只输出一个空白文件:(

4

4 回答 4

4

你的问题是模棱两可的,所以这是我能想到的每一个排列:

仅打印前 10 行

head -n10 yourfile > newfile

跳过前 10 行

tail -n+10 yourfile > newfile

每 10 行打印一次

awk '!(NR%10)' yourfile > newfile

每 10 行删除一次

awk 'NR%10' yourfile > newfile
于 2011-04-04T22:59:06.170 回答
3

(既然一个模棱两可的问题只能有一个模棱两可的答案......)

打印每十行(GNU sed):

$ seq 1 100 | sed -n '0~10p'
10
20
30
40
...
100

或者(GNU sed):

$ seq 1 100 | sed '0~10!d'
10
20
30
40
...
100

删除每十行 (GNU sed) :

$ seq 1 100 | sed '0~10d'
1
...
9
11
...
19
21
...
29
31
...
39
41
...

打印前十行 (POSIX):

$ seq 1 100 | sed '11,$d'
1
2
3
4
5
6
7
8
9
10

删除前十行 (POSIX):

$ seq 1 100 | sed '1,10d'
11
12
13
14
...
100
于 2011-04-04T23:09:15.877 回答
0

使用非 GNU sed,每 10 行打印一次

sed '10,${p;n;n;n;n;n;n;n;n;n;}'

(GNU sed -n '0~10p':)

并删除每 10 行使用

sed 'n;n;n;n;n;n;n;n;n;d;'

(GNU sed -n '0~10d':)

于 2013-05-13T07:44:52.320 回答
0
python -c "import sys;sys.stdout.write(''.join(line for i, line in enumerate(open('yourfile')) if i%10 == 0 ))" >newfile

它更长,但它是一种单一的语言——人们尝试做的每一件事都没有不同的语法和参数。

于 2011-04-04T23:05:25.220 回答