微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

awk – 在大文件中打印选定的行

我是AWK的新手.

我有一个大文本文件(> 3GB).喜欢使用AWK行命令按顺序提取/打印所选行(第62行,第152行和第153行),它每217行重复一次,直到文件中的记录结束.

试图从网上搜索和学习.尝试以下,似乎没有工作,

awk '{(for (i=62; i<=NR; i=i+217)||for (i=62; i<=NR; i=i+217)||for (i=62; i<=NR; i=i+217)); print}' file.txt

count=62||152||153
awk '{if (++count%217==0) print;}' file.txt

你能帮忙给我一些指示或引导我到任何可能有帮助的网站.

我正在使用这个http://www.catonmat.net/blog/wp-content/uploads/2008/09/awk1line.txt来学习.

RGDS
Saravanan K.

更新#1 – 2012年9月21日 – 下午10点40分

试着

awk 'NR == 62 || NR == 152 || NR == 153 || NR % 217 == 0 {print $0;}' file.txt

能够打印#62,#152和#153行,但不能完成以下所有迭代,例如#(62 217),#(152 217)和#(153 217)等等.

也试过以下,但效果不好.

awk '(NR == 62 || NR == 152 || NR == 153) && (((NR-62) % 217==0) || ((NR-152) % 217 ==0)|| ((NR-153) % 217==0)) {print $0;}' file.txt

更新#2 – 2012年9月21日 – 晚上10点55分 – 停止营业

我通过一些调整尝试了rmunoz的想法.它像魔术一样工作.感谢rmunoz,关于这个话题

awk '(NR - 62) % 217 == 0 || (NR - 152) % 217 == 0 || (NR - 153) % 217 ==0 {print $0;}' file.txt

解决方法

您可以这样使用AWK中的模式:

awk 'NR == 62 || NR == 152 || NR == 153 || NR % (62+217) == 0 || NR % (152+217) == 0 || NR % (153+217) == 0 {print $0;}' test.txt

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐