SED:如何删除文件中的每 10 行(对文件进行精简或二次采样)

发布于 2024-10-29 09:23:07 字数 108 浏览 4 评论 0原文

到目前为止我有这个:

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

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

I have this so far:

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

But it is not working, just outputs a blank file :(

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

演多会厌 2024-11-05 09:23:07

你的问题不明确,所以这里是我能想到的每一个排列:

仅打印前 10 行

head -n10 yourfile > newfile

跳过前 10 行

tail -n+10 yourfile > newfile

每 10 行打印

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

每 10 行删除

awk 'NR%10' yourfile > newfile

Your question is ambiguous, so here is every permutation I can think of:

Print only the first 10 lines

head -n10 yourfile > newfile

Skip the first 10 lines

tail -n+10 yourfile > newfile

Print every 10th line

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

Delete every 10th line

awk 'NR%10' yourfile > newfile
心欲静而疯不止 2024-11-05 09:23:07

(因为模棱两可的问题只能有模棱两可的答案...)

每十行打印 (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

删除 em> 前十行(POSIX):

$ seq 1 100 | sed '1,10d'
11
12
13
14
...
100

(Since an ambiguous questions can only have an ambiguous answer...)

To print every tenth line (GNU sed):

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

Alternatively (GNU sed):

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

To delete every tenth line (GNU sed):

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

To print the first ten lines (POSIX):

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

To delete the first ten lines (POSIX):

$ seq 1 100 | sed '1,10d'
11
12
13
14
...
100
锦爱 2024-11-05 09:23:07
python -c "import sys;sys.stdout.write(''.join(line for i, line in enumerate(open('yourfile')) if i%10 == 0 ))" >newfile

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

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

It is longer, but it is a single language - not different syntax and aprameters for each thing one tries to do.

柒七 2024-11-05 09:23:07

对于非 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'

With non-GNU sed, to print every 10th line use

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

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

and to delete every 10th line use

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文