如何使用awk,sed或其他unix命令每隔n个间隔获取一行范围?

如何使用awk,sed或其他unix命令每隔n个间隔获取一行范围?,第1张

概述我知道如何使用awk和sed获得一系列行. 我也知道如何使用awk和sed打印出每一行. 但是,我不知道如何将两者结合起来. 例如,我有一个1780000行的文件. 对于每17800行,我想打印第17800行以及之后的两行. 因此,如果我有一个1780000行的文件,它从1开始,结束于1780000,这将打印: 123178001780117802356003560135602# 我知道如何使用awk和sed获得一系列行.
我也知道如何使用awk和sed打印出每一行.

但是,我不知道如何将两者结合起来.

例如,我有一个1780000行的文件.

对于每17800行,我想打印第17800行以及之后的两行.

因此,如果我有一个1780000行的文件,它从1开始,结束于1780000,这将打印:

123178001780117802356003560135602# ... and so on.

有没有人知道如何使用awk,sed或其他unix命令每隔n个间隔获取一行范围?

解决方法 使用GNU sed:
sed -n '0~17800{N;N;p}' input

含义,

For every 17800th line: 0~17800  Read two lines: {N;N;  And print these out: p}

我们还可以添加前三行:

sed -n -e '1,3p' -e '0~17800{N;N;p}' input

使用Awk,这会更简单:

awk 'NR%17800<3 || NR==3 {print}' input
总结

以上是内存溢出为你收集整理的如何使用awk,sed或其他unix命令每隔n个间隔获取一行范围?全部内容,希望文章能够帮你解决如何使用awk,sed或其他unix命令每隔n个间隔获取一行范围?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1049365.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存