Ruby 相当于“grep -C 5”来获取匹配周围行的上下文?

2024-03-20

我对此进行了一些搜索,但我一定使用了错误的术语 - ruby​​ 是否有办法 grep 查找字符串/正则表达式并返回周围的 5 行(上面和下面)?我知道我可以打电话"grep -C 5 ..."或者甚至编写我自己的方法,但这似乎是 ruby​​ 拥有的东西,而我只是没有使用正确的搜索词。


您可以使用正则表达式来完成。这是我们要搜索的字符串:

s = %{The first line
The second line
The third line
The fourth line
The fifth line
The sixth line
The seventh line
The eight line
The ninth line
The tenth line
}

EOL 对我来说是“\n”,但对你来说可能是“\r\n”。我将把它固定为一个常数:

EOL = '\n'

为了简化正则表达式,我们将只定义一次“context”模式:

CONTEXT_LINES = 2
CONTEXT = "((?:.*#{EOL}){#{CONTEXT_LINES}})"

我们将搜索任何包含单词“fifth”的行。请注意,此正则表达式必须抓取整行,包括行尾,才能正常工作:

regexp = /.*fifth.*#{EOL}/

最后,进行搜索并显示结果:

s =~ /^#{CONTEXT}(#{regexp})#{CONTEXT}/
before, match, after = $1, $2, $3
p before    # => "The third line\nThe fourth line\n"
p match     # => "The fifth line\n"
p after     # => "The sixth line\nThe seventh line\n"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby 相当于“grep -C 5”来获取匹配周围行的上下文? 的相关文章

  • 是否可以基于正则表达式模式生成示例字符串?

    在我的应用程序中 用户可以在文本框中输入他自己的正则表达式模式 以便他可以强制另一个用户 文本框进行特定输入 用户是否可以看到与他输入的正则表达式匹配的字符串示例 例如 如果他要输入 A Z 2 它会生成一个像 XX 向用户表明他只能输入两
  • 使用正则表达式的 Strip() 函数

    我正在尝试重新创建strip 使用正则表达式的Python函数 这是最后一个练习题用 Python 自动化处理无聊的事情 https automatetheboringstuff com chapter7 这是我的代码 import re
  • 在 debian Squeeze 上安装 RoR

    有什么方法可以在我的 debian squeeze 上安装 Ruby 1 9 2 或 1 8 7 Rails 3 吗 您可能不想在生产计算机上使用 RVM 它的 PATH 魔力会在不明显的地方 例如 cron 作业 被破坏 然后你就会陷入困
  • 禁用特定 java 包的所有 checkstyle 检查

    我有两个包 即 com mydomain abc delegate xyz jaxws 托管 and com mydomain abc xyz jaxws managed 我要求仅对第二个包禁用 checkstyle 因为它们包含自动生成的
  • 如何从 Ruby 检查具有特定 pid 的进程是否正在运行?

    如果有多种方法 请列出 我只知道一个 但我想知道是否有一种更干净的 Ruby 方式 之间的区别Process getpgid and Process kill方法似乎是当 pid 存在但由另一个用户拥有时发生的情况 Process getp
  • 如何使用 watir 滚动网页

    我正在尝试滚动网页以查找并单击页面滚动时延迟加载的内容 我正在使用以下命令 require watir webdriver browser Watir new firefox browser send keys space 我在 Firef
  • PHP中用逗号分解复杂字符串

    我需要分割一个包含逗号的字符串 我已经找到了类似字符串的东西 str getcsv A B with a comma eh C 但我的字符串是这样的 例如值没有包含字符 A B one two C 我需要分解它并获得 array 3 0 g
  • 如何从 Python 列表中删除日期

    我有一个标记化文本列表 list of words 看起来像这样 list of words 08 20 2014 10 04 27 pm complet vendor per mfg recommend 08 20 2014 10 04
  • 在 Rails 4 中渲染部分/rake 任务/后台作业/模型中的视图

    我读过很多关于在 rake 任务 后台作业 模型中渲染 Rails 部分和视图的内容 我在 Stackoverflow 和网络上找到的绝大多数内容都描述了在 Rails 3 中工作的方法 但它们似乎已经过时了 而且我没有让它们工作 即使花了
  • 在新的 RHEL6 服务器上安装 ruby​​-filemagic gem 时遇到困难

    它似乎正在寻找 libmagic so 1 文件 我有那个文件 它位于 usr lib64 中 我没有以 root 用户身份运行此安装 我也在使用 rvm 和 Bundler 这是我的 bundle 命令的结果 当它到达 Gemfile 中
  • 从字符串中提取数字 (Regex C++)

    假设我有一根绳子S 1 this is a number 200 Val 54 4class find57 我想用Regex仅提取这些数字 num 1 1 num 2 200 num 3 54 而不是 4class 中的 4 或 find5
  • Ruby:在 Ubuntu 上安装 rmagick

    我正在尝试在 Ubuntu 10 04 上安装 RMagick 看起来here https stackoverflow com questions 1482823 is there an easy way to install rmagic
  • 如何检查水豚中的复选框?

    我正在使用 Rspec 和水豚 我怎样才能写一个步骤来检查checkbox 我试过了check按价值但它找不到我的checkbox 我不知道该怎么做 因为我实际上有相同的 ID 但值不同 这是代码
  • 如何让 Sinatra 通过 HTTPS/SSL 工作?

    正如标题所示 谷歌没有提供任何与此相关的有用信息 如何为 Sinatra 应用程序设置和配置 HTTPS SSL 如何创建 HTTPS 路由 我以前从未在我的应用程序中使用过 HTTPS 也没有调整 Rack 其他内容的经验 所以我很欣赏详
  • 正则表达式 - 检查输入是否仍有机会匹配

    我们有这样的正则表达式 var regexp one two three 所以只有像这样的字符串 one two three or one two three four or one twotwo three 等会匹配它 但是 如果我们有类
  • 如何使用 Ruby 2.7.0 修复 Rails 的警告消息

    有没有人解决这个问题Ruby 2 7 0 I used rbenv并安装了 Ruby v2 7 0 然后使用创建了一个 Rails 项目Rails v6 0 2 1 目前 通过运行之一 rails s rails s u puma rail
  • UcanaccessSQLException:UCAExc:::3.0.1 表达式的数据类型不是布尔值

    我有一张如下图所示的表格 我需要获取其库尔德语单词包含的所有英语单词 r 所以我不能使用 select English from Table1 where Kurdish like 因为它还接受另一个单词中的子字符串 例如 当我尝试在查询中
  • JavaScript 中的正则表达式用于验证十进制数字

    我想要 JavaScript 中的正则表达式来验证十进制数字 它最多只允许两位小数 例如 它应该允许10 89但不是10 899 它还应该只允许一个句点 例如 它应该允许10 89但不是10 8 9 尝试使用以下表达式 d d 0 2 如果
  • 从类内部调用属性访问器方法[重复]

    这个问题在这里已经有答案了 我正在尝试调用我的类属性编写器之一 但由于某种原因它永远不会被调用 下面是一些代码 可以使这一点更清楚 class Test attr reader test def test val puts Called t
  • 正则表达式字符串中第一个和最后一个非点的位置

    我希望找到字符串的第一个和最后一个非点元素的位置 理想情况下我想这样做regex在基地R 我已经写过R解决问题的代码 不过 我对一个感兴趣regex解决方案 感谢您的任何建议 这是一个示例数据集和R代码以获得所需的结果 此代码拆分字符串并使

随机推荐

  • Heroku 上多部分表单的路由问题

    这是一个非常奇怪的问题 不幸的是我无法提供大量信息 因为我什至不知道从哪里开始诊断问题 我希望有人能神奇地听到该做什么 我很乐意在必要时进行澄清 由于某种原因 每当我使用 Chrome 在 Heroku 上提交带有文件附件的新的多部分表单时
  • systemctl 命令在 docker-container 中不起作用

    我已经为我的 Spring Boot 应用程序制作了一个 Docker 映像 我无法在 Docker 容器内运行 systemctl 命令 这是我执行时得到的结果 systemctl daemon reload Failed to conn
  • 为什么 PHP 中需要类型提示?

    我无法理解 PHP 中类型提示的重要性 显然 PHP 中的 类型提示 可以定义如下 类型提示 强制您仅传递特定类型的对象 这可以防止您传递不兼容的值 并创建一个 如果您与团队合作等 则为标准 那么 在最基本的级别上进行类型提示 不需要让代码
  • 获取特定列值的 SSRS 矩阵行总计

    在 Microsoft Sql Server 报告服务 2008 R2 中Matrix 我想添加一列 显示一个数据项除以该行数据项总数的百分比 Total的表达式为 Sum Fields Count Value 我如何访问该行的成功总和成功
  • 我应该如何将字典编码为 HTTP GET 查询字符串?

    HTTP GET 查询字符串是键 值对的有序序列 spam eggs spam ham foo bar 在某些语义下 相当于以下字典 spam eggs ham foo bar 这恰好适用于所请求页面的布尔属性 expand 1 expan
  • 使用 LINQ2SQL 插入新的子级+父级

    与 LINQ2SQL 作斗争 我是新手 到目前为止一切都还好 但这个问题确实让我悲伤 我有两个对象 父对象和子对象 定义如下 Table Name Parent public class Parent Column IsPrimaryKey
  • 关闭时似乎有 6 个泄漏的信号量对象需要清理 warnings.warn('resource_tracker: 似乎有 %d

    我正在尝试通过 python 3 8 在我的 Firebase 实时数据库上进行测试连接 我有两个脚本 一个是wdata 写入数据 另一个是rdata 读取数据 wdata py 是 from firebase import firebas
  • shell 脚本删除文件(如果已存在)

    我正在研究一些将数据存储在文件中的东西 但每次我运行脚本时 它都会附加到前一个文件中 我需要有关如何删除该文件 如果该文件已存在 的帮助 不必费心检查该文件是否存在 只需尝试将其删除即可 rm f p a t h or rm p a t h
  • Python:获取字符串的大小(以字节为单位)

    我有一个要通过网络发送的字符串 我需要检查它所表示的总字节数 sys getsizeof string name 返回额外的字节 例如对于sys getsizeof a 返回 22 而在 python 中 一个字符仅用 1 个字节表示 还有
  • Java 应用程序不显示输出

    这是我更新的代码 package car1 公共类主要 公共静态无效主 字符串 args HondaCivic 类实现 car1 int speed 0 int rpm 0 int gear 1 public void speedUp in
  • 如何使用 Jersey REST 处理服务不可用的情况

    我有一个与 Spring 集成的球衣 RESTful 服务 web xml 中映射的基本 url 是 rest 我的服务等级如下 Resource Scope request Path service Component public cl
  • 如何在角度材料2中选择默认项目选择多个

    我正在开发 Angular 2 Material 应用程序 我有一个情况 其中存在多选元素 并且我有一个带有复选框的列表 因此我可以一次选择多个项目 我可以使用角度材质组件来实现这一点 但我想要的是默认检查 2 3 个项目 如果我选择 取消
  • Laravel 5 在测试之间重新播种数据库以进行单元测试

    我从一个种子数据库开始 并尝试在 Laravel 5 的单元测试之间重新种子数据库 在 Laravel 4 中 我知道您可以简单地使用 Illuminate Support Facades Artisan 并运行命令 Artisan cal
  • 为什么java.nio.files.Path中没有Path构造函数?

    Path 类没有记录的构造函数 但可以通过以下方式创建实例 Paths get 这是FileSystems getDefault getPath 那么有人可以解释这个设计决策吗 有人可以解释这个设计决定吗 这是因为 JSR 203 允许从多
  • ManageUserViewModel 类在哪里?

    我使用 ASP Net MVC 5 EF 6 和 Net 4 5 1 创建了一个项目 在某些时候 我需要更改项目所在的命名空间 从 MyTestProject 更改为 MyRealProject 在整个网站上进行这些更改后 我现在在一些视图
  • 避免贫血域模型 - 一个真实的例子

    我试图理解贫血领域模型以及为什么它们被认为是反模式 这是一个现实世界的例子 我有一个 Employee 类 它有大量的属性 姓名 性别 用户名等 public class Employee public string Name get se
  • WCF 与 Java 兼容吗?

    哪些 WCF 服务协议与 Java 配合得很好 TCP 服务绑定是否可与 java 远程处理 Corba EJB JMS 等 配合使用 作为服务端点公开的 Web 服务又如何呢 这些是否已经针对通用 Java WebServices 堆栈进
  • 如何为特定目录设置open_basedir

    我有一个目录 htdocs unsecured我想限制该目录或其子目录中的任何内容访问该目录之外的任何内容 在哪里以及如何设置open basedir仅适用于此目录 您可以设置open basedir在您的 Apache 配置文件 php
  • 将 git lfs ls-files 与 git ls-files ':(attr:filter=lfs)' 进行比较是否是检测不受 lfs 管理的 lfs 文件的可靠方法?

    我尝试找到一种方法来确定 git 存储库中的文件是否由 git lfs 正确管理 到目前为止 我发现比较结果git lfs ls files and git ls files attr filter lfs 似乎给了我我想要的 Add Ty
  • Ruby 相当于“grep -C 5”来获取匹配周围行的上下文?

    我对此进行了一些搜索 但我一定使用了错误的术语 ruby 是否有办法 grep 查找字符串 正则表达式并返回周围的 5 行 上面和下面 我知道我可以打电话 grep C 5 或者甚至编写我自己的方法 但这似乎是 ruby 拥有的东西 而我只