SED:如何删除文件中的每 10 行(对文件进行精简或二次采样)
到目前为止我有这个:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你的问题不明确,所以这里是我能想到的每一个排列:
仅打印前 10 行
跳过前 10 行
每 10 行打印
每 10 行删除
Your question is ambiguous, so here is every permutation I can think of:
Print only the first 10 lines
Skip the first 10 lines
Print every 10th line
Delete every 10th line
(因为模棱两可的问题只能有模棱两可的答案...)
每十行打印 (GNU
sed
):或者 (GNU
sed
):删除每十行 (GNU
sed
):打印前十行 (POSIX):
删除 em> 前十行(POSIX):
(Since an ambiguous questions can only have an ambiguous answer...)
To print every tenth line (GNU
sed
):Alternatively (GNU
sed
):To delete every tenth line (GNU
sed
):To print the first ten lines (POSIX):
To delete the first ten lines (POSIX):
它更长,但它是一种单一语言 - 对于每个人尝试做的事情没有不同的语法和参数。
It is longer, but it is a single language - not different syntax and aprameters for each thing one tries to do.
对于非 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 usesed '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'
)