如何将正则表达式的匹配分配给变量?

2024-01-01

我有一个文本文件,其中包含各种条目。每个条目都以包含所有星号的行结束。

我想使用 shell 命令来解析该文件并将每个条目分配给一个变量。我怎样才能做到这一点?

这是一个示例输入文件:



***********
Field1
***********
Lorem ipsum
Data to match
***********
More data
Still more data
***********
  

到目前为止,我的解决方案如下:

#!/bin/bash
for error in `python example.py | sed -n '/.*/,/^\**$/p'`
do
    echo -e $error
    echo -e "\n"
done

然而,这只是将匹配文本中的每个单词分配给 $error,而不是整个块。


我很惊讶这里没有看到原生的 bash 解决方案。是的,bash 有正则表达式。您可以在线找到大量随机文档,特别是如果您的查询中包含“bash_rematch”,或者只需查看手册页。这是一个愚蠢的例子,摘自here http://www.linuxjournal.com/content/bash-regular-expressions并稍作修改,打印正则表达式的整个匹配项以及每个捕获的匹配项。

if [[ $str =~ $regex ]]; then
    echo "$str matches"
    echo "matching substring: ${BASH_REMATCH[0]}"
    i=1
    n=${#BASH_REMATCH[*]}
    while [[ $i -lt $n ]]
    do
        echo "  capture[$i]: ${BASH_REMATCH[$i]}"
        let i++
    done
else
    echo "$str does not match"
fi

重要的是扩展测试[[ ... ]]使用其正则表达式比较=~将整个比赛存储在${BASH_REMATCH[0]}和捕获的匹配项${BASH_REMATCH[i]}.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将正则表达式的匹配分配给变量? 的相关文章

随机推荐

  • data 作为 fs.readFile 参数的用途是什么?

    为什么 fs readFile 函数中需要 data 作为参数 const fs require fs fs readFile SampleFile txt function read err data if err throw err c
  • Qt - 组合框处于活动状态时不会触发按键事件

    当我进入按键事件同时按下combobox keypress事件没有被触发 当另一个小部件处于活动状态时 是否有办法仍然获取事件 def keyPressEvent self event if event key 49 49 number 1
  • 测试 const 模态组件是否被调用

    我有一个页脚组件 上面有几个按钮 所有这些按钮都使用Messageconst 这是一个 antd 模式 消息 jsx import Modal from antd const confirm Modal export const Messa
  • 异步任务不会显示进度对话框

    一段时间以来我一直在寻找这个问题的答案 我有一个异步任务 用于下载我的应用程序所需的数据库 虽然正在下载我的应用程序无法执行任何操作 因为它引用的所有数据都在此文件中 我让应用程序等待下载文件 但我正在尝试显示进度对话框 以便用户在等待发生
  • 如何让线程使用下一个尚未使用的对象?

    我可能会尝试使用threading对于我不应该做的事情 如果是这样 请告诉我 我制作了一个较小的代码示例 以便更容易理解我想要的内容 我让用户输入 IP 地址 然后我对他们输入的 IP 地址执行 ping 操作 我想一次 ping x 个
  • azure iothub 设备状态

    getConnectionState 根据设备连接 断开 如果它正在发送消息 我应该看到已连接 如果它不发送 我应该断开连接 但是每次我运行下面的 java 程序时 无论设备是什么 我都会得到断开连接的状态是否发送消息 RegistryMa
  • Spring security - 同一页面根据用户角色提供不同的内容

    我尝试搜索与我的问题相关的任何以前的帖子 但找不到任何内容 我有一个场景 其中页面处理 3 种不同的场景 其中一个不起作用 此页面根据用户是否经过身份验证或匿名返回不同的内容 localhost 8080 myApp muUrl test
  • MongoDB全文搜索可以得到模糊匹配的单词吗?

    我正在编写一个 UI 用于显示 MongoDB 全文搜索查询的结果 直观地突出显示每个结果中匹配的搜索词 这对于完整的单词或短语匹配来说足够有效 但对于部分 模糊匹配则不然 例如 如果我搜索 delete 将得到包含 deletion 的搜
  • RecyclerView 没有显示任何内容

    在我的应用程序中 我从 sqlite 数据库获取数据并使用 RecyclerView 显示它们 这是我的适配器 public class RecyclerViewAdapter extends RecyclerView Adapter
  • 如何在JAVA中从2D数组中获取2D子数组?

    假设我有如下二维数组 int temp 1 2 3 4 5 6 7 8 9 10 11 12 我想要从 X 方向 1 到 2 和 Y 方向 1 到 2 开始子数组 即 6 7 10 11 谁能给我解决上述问题 给你 int temp 1 2
  • 在 Java 8 中,如何获取主机名而不在我的环境中对其进行硬编码?

    我们刚刚在 Amazon Linux 上升级到 Java 8 我们正在使用 Spring 4 3 8 RELEASE 过去 我们可以通过在应用程序上下文文件中设置 bean 来获取机器主机名 如下所示
  • 未知异常android

    这是我的主文件 其中有图像按钮 它给了我一个例外 当我单击课程图像按钮时 它只是关闭应用程序 它适用于其余按钮 其余活动仅包含文本视图和按钮 而在课程视图中 我又添加了 3 个按钮 在添加这 3 个按钮之前 它用于在主课程和课程之间切换 我
  • .NET 数据模型显示为 XML,而不是图表

    那是 我格式化计算机并重新安装整个环境 但看不到数据模型图 我的意思是 我打开数据模型 edmx 文件 然后在 XML 文件中看到所有数据库表和数据库信息 不是图表 我安装了vs2010 sp1 net Framework 4 micro
  • 寻找一个与 C# 一起使用的免费 SMS 网关 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我在 ASP NET 2 0 中开发了一个网站 我想向每个注册到我的网站的人发送一条短信 我想用 C
  • Go 真的能比 Python 快那么多吗?

    我认为我可能错误地实施了这一点 因为结果没有意义 我有一个 Go 程序 计数到 1000000000 package main import fmt func main for i 0 i lt 1000000000 i fmt Print
  • DataGridView 行添加事件

    我正在使用 DataGridView 并将列表绑定到数据源 我已经有了正确的列 并且准确地映射了字段 我想做的是处理一种RowAdded or RowDataBound 就像在 aspx GridView 中一样 事件 我发现的唯一事件是R
  • 我是否必须创建新的可见元素才能遵守 Google 的 Microdata Schema.org 要求?

    我已将 Schema org Microdata 属性添加到我网站上的列表组件中 This is one item in my list div span The Awesome Web App 01 span span span span
  • 更改文件的单个字符

    我需要更改文件中的单个字符 我不想使用像这样的辅助文件 伪代码 read theFile change theFile write theFile2 erase theFile rename theFile2 theFile 因为通过这种方
  • 通过 Javascript 查找何时在 EPUB FXL 中查看页面

    是否可以找出何时使用 Javascript 查看 EPUB 固定布局的页面 有 DOMContentLoaded 事件 但相邻页面在 iBooks 中预加载时也会触发此事件 导致动画或声音在页面可见之前启动 不 这不对 这是iBooks的一
  • 如何将正则表达式的匹配分配给变量?

    我有一个文本文件 其中包含各种条目 每个条目都以包含所有星号的行结束 我想使用 shell 命令来解析该文件并将每个条目分配给一个变量 我怎样才能做到这一点 这是一个示例输入文件 Field1 Lorem ipsum Data to mat