【发布时间】:2019-08-14 05:18:30
【问题描述】:
我想输出长于指定单词数的行,比如说 5。我使用了awk,如下所示,但它不适用于包含很长句子(超过 32767 个字段)的文件。
awk 'NF>5' FS=" " file.txt
我尝试按照this thread 中的建议使用sed 和grep,但我无法根据字数而不是字符数使其工作。
你能帮我解决这个问题吗?非常感谢您的帮助!
【问题讨论】:
-
没有 GNU awk 是什么意思?您的系统中是否安装了其他任何 awk 变体?
-
试着用积极而不是消极的方式表达你的需求,这会让它们更容易理解,因此生成的代码更有可能是正确的。而不是
I want to remove lines that are shorter than a specified number of words, lets say 5,只需说I want to output lines that are longer than a specified number of words, lets say 4。通过谈论你想输出什么而不是你想从输出中删除什么,你的需求和限制变得更加清晰。 -
另外 - 安装 gawk 是您的问题的一种潜在解决方案,但这不是您的问题,所以它不应该成为您问题的重要部分。您真正的问题应该是“当我在系统 Z 上只有 Y awk 可用时,我该怎么做 X”。您的 awk 可能与您正在使用的系统上已经可用的 awk 不同(例如 Solaris 有 3 个 awk 变体),但您没有告诉我们有关您正在使用的 awk 或您所在的系统的任何信息,只是你不能安装 gawk。
-
@EdMorton 哦,我现在刚刚阅读了您的 cmets。非常感谢您的宝贵建议!我将编辑我的问题并注意使我未来的问题更清晰和重点。