bash 中 =~ 运算符支持什么正则表达式语法?

2023-12-10

我发现我可以使用=~运算符而不是expr我的 4.2.10(1) BASH 中的命令。它比(在命令内)快得多expr这个事实在大量重复的循环中可能很重要。

我能够使用正则表达式的大部分元字符,但不是全部。

例如,我可以检查一个字符串是否精确匹配 3 次重复(一个小字母、一个数字、一个点):

[[ "b3.f5.h3." =~ ^([a-z][0-9]\.){3}$  ]] && echo OK
OK

我可以选择匹配的子字符串:

[[ "whatis12345thetwo765nmbers" =~ ^[a-z]+([0-9]+)[a-z]+([0-9]+) ]] && \
echo "The two number fields are: ${BASH_REMATCH[1]}  ${BASH_REMATCH[2]}"
The two number fields are: 12345  765

但我想使用更多元字符,例如上面列出的元字符此 TLDP 页面.

我特别想匹配单词边界:\b, \B, \<, \> .

我试图在其中找到答案高级 Bash 脚本指南(第18章和第37章)但没有成功。

哪里可以找到详细的说明=~操作员?

目前我只对 BASH 感兴趣,对 gawk、sed、perl 或其他工具不感兴趣。


=~支持 POSIX ERE,除了本地 C 库添加的扩展之外没有任何扩展(从字面上看,它调用标准 C 库的正则表达式调用)。因此,关于它保证支持的功能的规范文档(而不是您的本地 C 库可能另外添加的可选功能)是 ERE 的规范,IEEE 1003.1,第 9.4 节.


放大这一点:任何东西,例如\<,由一个特定的 libc(即 glibc)添加,但不存在于 POSIX 规范中不能指望在 bash 支持的所有平台上可移植地工作.

POSIX 指定的特殊字符(如标准第 9.4.3 节给出) 不包括 <, >, b or B;这些都是 GNU 扩展并且不可移植。

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

bash 中 =~ 运算符支持什么正则表达式语法? 的相关文章

  • 如何通过ssh获取远程命令的退出代码

    我正在通过 ssh 从远程计算机运行脚本 ssh some cmd my script 现在 我想在本地计算机上存储 shell 脚本的退出状态 我该怎么做 假设没有任何问题ssh其本身 其退出状态是在远程主机上执行的最后一个命令的退出状态
  • shell脚本中的“##”是什么意思? [复制]

    这个问题在这里已经有答案了 在编写脚本时 我遇到了这个命令 f file 我很想知道 什么是 这行是什么意思 In bash 它删除了前缀模式 在这里 它基本上为您提供了最后一个路径分隔符之后的所有内容 通过贪婪地删除前缀 后面跟随任意数量
  • bash 将输出重定向到文件,但结果不完整

    重定向命令输出的问题已经被问过很多次了 但是我有一个奇怪的行为 我使用的是 bash shell debian 版本 4 3 30 1 release 并尝试将输出重定向到文件 但并非所有内容都记录在文件中 我尝试运行的 bin 文件是 l
  • 从 shell 查找不包含特定注释的 XML 文件

    我想搜索 awk grep sed 几个 XML 文件 pom xml 文件 跳过某些文件夹 而且 第一个条件是它们必须包含标签
  • BASH:输入期间按 Ctrl+C 会中断当前终端

    我的 Bash 版本是 GNU bash version 4 3 11 1 release x86 64 pc linux gnu 我有一段这样的代码 while true do echo n Set password read s pas
  • 使用 sed 查找并替换包含非转义字符的变量

    我可以使用它来查找 fly 的所有实例 并将其替换为文件中的 insect sed i s fly insect g animals txt 如何找到 BASH 变量并将其替换为另一个 BASH 变量 例如 name echo fly ca
  • 如何并行执行4个shell脚本,我不能使用GNU并行?

    我有4个shell脚本dog sh bird sh cow sh和fox sh 每个文件使用 xargs 并行执行 4 个 wget 来派生一个单独的进程 现在我希望这些脚本本身能够并行执行 由于某些我不知道的可移植性原因 我无法使用 GN
  • 获取最新远程提交的 SHA1 [重复]

    这个问题在这里已经有答案了 可能的重复 git bash 如何检查是否有新的提交可用 https stackoverflow com questions 6006759 git bash how to check if theres a n
  • Bash:递归复制命名文件,保留文件夹结构

    我希望 cp R src prog js images icon jpg tmp package 将在目标目录中产生对称结构 tmp package src prog js images icon jpg 但相反 这两个文件都被复制到 tm
  • 如何制作 Bash 脚本来查找项目中未使用的图像?

    如何制作一个 Bash shell 脚本 它可以识别所有 jpg gif 和 png 文件 然后识别文件夹中任何文本文件中哪些文件未通过 url href 或 src 链接 这就是我开始的 但我最终得到了与我想要的相反的结果 我不想知道引用
  • 在 byobu 选项卡中启动命令的脚本

    我已经使用 screen 来启动服务器进程 以便稍后我可以在需要时附加并再次分离以继续执行其他操作 它工作得很好 但我最近发现了 byobu 我真的很喜欢它 我想使用相同类型的脚本来运行服务器 但我想将其附加到 byobu 选项卡 而不是屏
  • 静默检查 bash 脚本中是否存在 rpm

    我正在尝试使用 if 语句快速检查 rpm 是否安装在 bash 脚本中 但我想默默地做 目前 当我运行脚本并且 rpm 确实存在时 它将 rpm 的输出输出到我不想要的屏幕 if rpm qa grep glib then do some
  • 在 bash 脚本中使用源时出现“源:未找到”错误

    我正在尝试编写 我认为的 一个简单的 bash 脚本 它将 运行 virtualenv 以 1 美元创建一个新环境 激活虚拟环境 做更多的事情 安装 django 将 django admin py 添加到 virtualenv 的路径等
  • 在 Bash 中替换垂直线

    我很难完成我的脚本 因为这一部分没有按照我想要的方式运行 我的脚本中有这一行 cat home tmp temp1 txt awk gsub RS gsub RS print gt home tmp temp txt 效果很好 是的 但是当
  • Bash for Windows 10 gcc 不会编译粘贴到根目录中的 c 文件

    正如标题所示 如果我将在其他地方编写的c文件粘贴到Linux子系统的根目录中 则无法编译它 我做了一个测试 我制作了两个不同标题的 hello world 程序 一个在 vi 中 我可以从 bash 界面进入 另一个在其他地方 当我编译了
  • 检查 Git 中是否需要 pull

    如何检查远程存储库是否已更改并且需要拉取 现在我使用这个简单的脚本 git pull dry run grep q v Already up to date changed 1 但它比较重 有没有更好的办法 理想的解决方案是检查所有远程分支
  • 在 bash 脚本中检测鼠标点击

    我想知道如何在后台运行 bash 脚本 每当用户单击鼠标时该脚本都会执行某些操作 即运行脚本或命令或其他任何内容 即使终端关闭 我也希望它继续运行 有任何想法吗 谢谢 如果您使用的是X11 您可以尝试xdotool捕获鼠标事件 它会是这样的
  • 如何扩展路径中的波形符(~)[重复]

    这个问题在这里已经有答案了 我有一个 shell 脚本 可以从用户那里获取目录路径 但我需要检查目录是否为空 如果用户将他的主路径与 而不是绝对路径 所以我无法检查它ls echo Specify your project root dir
  • Bash 中的动态变量名称

    我对 bash 脚本感到困惑 我有以下代码 function grep search magic way to define magic variable 1 ls tail 1 echo magic variable 1 我希望能够创建一
  • 为什么 Git Bash 无法运行我的可执行文件?

    I am on git for windows https github com git for windows 吉特 巴什 我无法在命令行上运行可执行文件 Pedr Abc 07 MINGW64 c dev ls sqlite3 exe

随机推荐

  • Git 操作缓慢

    我有一个放在 Git 下的测试存储库 大多数文件都非常小 但数量非常多 简单的 Git 操作 例如添加和状态 需要数十分钟才能完成 我可以选择哪些选项来将这些内容置于修订控制之下并获得合理的性能 我应该尝试使用子模块还是应该避开 DVCS
  • 如何防止WKWebView重复请求访问位置的权限?

    我有一个WKWebView在我的应用程序中 当我开始浏览 www google com 或任何其他需要位置服务的网站时 会出现一个弹出窗口 请求访问设备位置的权限 即使我已经同意共享我的位置 我为管理这个位置所做的唯一一件事就是添加了NSL
  • 链接并执行 GitHub 上托管的外部 JavaScript 文件

    当我尝试将本地 JavaScript 文件的链接引用更改为 GitHub 原始版本时 我的测试文件停止工作 错误是 拒绝执行来自 的脚本 因为它的 MIME 类型 text plain 不可执行 并且启用了严格的 MIME 类型检查 有没有
  • pandas groupby - 返回满足条件的组中的第一行

    鉴于下面的示例数据集 我想每个返回一行group这表明obsnum第一行的score小于0 4 import pandas as pd import numpy as np np random seed 42 df pd DataFrame
  • R——未列出时将其他元素强制转换为字符

    我无法理解R的这种行为 a lt list a 1 b 2 c NA d Inf vec lt unlist a use names FALSE print vec 1 1 2 NA Inf 当列表中有字符值时 它会将所有未列出的值强制转换
  • 有没有办法转换 Spring 数据存储库返回的对象?

    现在我有一个实体对象和一个 DTO 当我执行一个简单的示例 如 findById 时 存储库返回对象数组列表 有没有一种方法可以轻松地将返回类型映射为自定义 DTO 对象 而不是始终返回实体对象 示例如下 Query Select f id
  • Objective-C 中有没有办法识别两个图像是否几乎相同?

    假设您有两个图像 and 除了一些颜色不同的像素外 这些图片几乎完全相同 Objective C 中有没有一种原生方法来识别两张图片是否几乎相同 如果不 还有其他方法吗 在计算机视觉和图像处理中的定义几乎相同不同的应用程序可能会有很大差异
  • 线程“main”org.apache.spark.SparkException 中出现异常:此 JVM 中只能运行一个 SparkContext(请参阅 SPARK-2243)

    当我尝试使用 cassandra 运行 Spark 应用程序时 出现错误 Exception in thread main org apache spark SparkException Only one SparkContext may
  • Android - setOnClickListener vs OnClickListener vs View.OnClickListener

    我的理解是 当我创建一个监听点击的按钮对象时 我必须 创建按钮对象 Use OnClickListner让它听用户的点击 Use onClick在用户单击按钮后执行操作 Now 哪里有setOnClickListener符合上面的逻辑吗 哪
  • 2012 年至 2013 年更新后无法加载文件或程序集“System.Web.Http 4.0.0”

    我按照升级的方法进行了升级 http www asp net mvc tutorials mvc 5 how to upgrade an aspnet mvc 4 and web api project to aspnet mvc 5 an
  • 防止地址栏在移动浏览器中隐藏

    我目前正在开发一个水平布局的网站 所有元素都是position absolute 使用javascript 它们的大小是通过 window innerHeight 计算的 我的问题是 尽管元素不高于窗口的高度 但我可以向下滚动 地址栏的高度
  • 使用 magento 命令连接自定义表

    我一直在尝试使用 magento 的命令连接两个自定义表 搜索后我发现这段通用代码 collection Mage getModel module model name gt getCollection collection gt getS
  • 使用 iOS 异步上传音频文件

    有没有办法将音频文件异步上传到我的服务器 我已经使用 NSURLConnection 类同步实现了它 也许你也可以给我一个简短的代码示例 Thanks 你绝对必须使用ASIHttp请求 它非常简单 它是所有 iOS 系统上最受欢迎的库 只需
  • 对齐基于网格的表单元素及其标签

    我们有一个要求 将表单元素放置在 3 个单独的列中 标签可以有不同数量的文本 表单元素主要是输入框和文本区域 设计者希望确保输入元素正确垂直对齐 我们无法使用特定的填充 边距 因为这在应用程序本地化时不灵活 请看下图 第一行显示我们遇到的问
  • Windows批处理文件中的git grep和xargs?

    我正在尝试创建一个 Windows 友好的 bat实施以下 sh脚本 上面几行都很好 只需添加SET和cd没问题 git grep 没问题 但是 xargs不是 那会是什么git grep xargs逻辑看起来像 bat INFINITY
  • 用另一个布局替换 ListView 行 onClick

    我有一个只有 TextView 的 ListView 我想要一个实现 如果我单击 ListView 行 则应出现带有替换按钮的编辑文本 并且无论我在该编辑文本中键入并单击替换 列表行都应更新 我面临的主要问题是在列表行上夸大布局 有人能告诉
  • 使用SQLPlus时如何设置Oracle绑定变量?

    使用 SQLPlus 时如何设置 Oracle 绑定变量 Example SELECT orders order no FROM orders WHERE orders order date BETWEEN v1 AND v2 我如何设置日
  • 属性“...”没有初始值设定项,并且未在构造函数中明确分配

    在我的 Angular 应用程序中 我有一个组件 import MakeService from services make service import Component OnInit from angular core Compone
  • 使用 Vim 自动插入“花式”注释

    我喜欢在我的 C 代码中添加这样的注释 Blah 但我厌倦了输入所有这些星号 而且复制 粘贴也很烦人 我想知道我是否可以用 Vim 创建一个宏 这样如果我按 例如 CTRL L 它会自动在我的代码中插入该结构并将光标对齐在中间 实际注释所在
  • bash 中 =~ 运算符支持什么正则表达式语法?

    我发现我可以使用 运算符而不是expr我的 4 2 10 1 BASH 中的命令 它比 在命令内 快得多expr这个事实在大量重复的循环中可能很重要 我能够使用正则表达式的大部分元字符 但不是全部 例如 我可以检查一个字符串是否精确匹配 3