SED:如何删除文件中的每10行(精简或子样本文件)

时间:2011-04-04 22:57:38

标签: sed subsampling

到目前为止,我有这个:

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

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

4 个答案:

答案 0 :(得分:4)

你的问题含糊不清,所以这是我能想到的每一种排列:

仅打印前10行

head -n10 yourfile > newfile

跳过前10行

tail -n+10 yourfile > newfile

每隔10行打印

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

删除每10行

awk 'NR%10' yourfile > newfile

答案 1 :(得分: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

答案 2 :(得分:0)

python -c "import sys;sys.stdout.write(''.join(line for i, line in enumerate(open('yourfile')) if i%10 == 0 ))" >newfile

它更长,但它是一种语言 - 对于每个人试图做的事情都没有不同的语法和参数。

答案 3 :(得分: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'