【问题标题】:Why this exclusion not working for long sentences?为什么这种排除不适用于长句子?
【发布时间】:2015-08-30 14:35:07
【问题描述】:

命令

perl -ne 'print unless /.[240,]/' input.txt > output.txt

其中包括一些超过 240 个字母的句子。为什么?

示例数据

制定世界有趣的社会计划,针对年轻人 为体育和社交生活而​​努力,使他们拥有 时不时去比萨店做点有趣的编程 并享用美味的早餐:|空闲时间节目的世界场景是 通常太长,以至于这颗星可能会使节目不安 (*)|又是一个很长的选项,这可能不是 让这个程序不高兴|好的更短的选择,这很好,但很好 在这里写咖啡早间消息|c 最后一个选项总是好的 因为你知道你很快就会停下来1

示例数据2

这个程序的适应症取决于很多事情,我很喜欢 这比 Lorem ipsum 更通用,需要太多 打开的时间:|短选项以防万一|稍长的选项非常好 在这里也有|更短的也更好,但是多少钱 问题|最短不是最短|再一次但不是太长 长 1

【问题讨论】:

  • 这个问题应该已经关闭,没有投票,因为OP的问题是由一个错字引起的。

标签: text-processing perl


【解决方案1】:

您使用了错误的语法:[] 用于匹配一个字符类,而在这里您尝试匹配多个出现的.,这可以使用{} 来完成:

perl -ne 'print unless /.{240,}/' input.txt > output.txt

此外,正如 cmets 中的 salva 所建议的,该模式可以缩短为 .{240}

perl -ne 'print unless /.{240}/' input.txt > output.txt

【讨论】:

  • 然后,可以进一步简化:perl -ne 'print unless /.{240}/' input.txt > output.txt
  • @salva 这将打印每一行,但包含正好 240 个字符的行。
  • 不,我的单行打印包含少于 240 个字符的任何行。为了匹配 240 个字符的行,您必须使用 /^.{240}$/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多