使用 awk 将特定子字符串与正则表达式匹配

2024-06-03

我正在处理特定的文件名,并且需要从中提取信息。

文件名的结构类似于:“20100613_M4_28007834.005_F_RANDOMSTR.raw.gz”

RANDOMSTR 是最多 22 个字符的字符串,并且可能包含(或不包含)格式为“-W[0-9].[0-9]{2}.[0-9]{3}”的子字符串。该子字符串还具有以“-W”开头的独特特征。

我需要提取的信息是 RANDOMSTR 的子字符串,没有这个可选子字符串。

我想在 bash 脚本中实现这一点,到目前为止,我发现的最佳选择是将 gawk 与正则表达式一起使用。到目前为止我最好的尝试失败了:

gawk --re-interval '{match ($0,"([0-9]{8})_(M[0-9])_([0-9]{8}\\.[0-9]{3})_(.)_(.*)(-W.*)?.raw.gz",arr); print arr[5]}' <<< "20100613_M4_28007834.005_F_OTHER-STRING-W0.40+045.raw.gz"
OTHER-STRING-W0.40+045

预期结果是:

gawk --re-interval '{match ($0,$regexp,arr); print arr[5]}' <<< "20100613_M4_28007834.005_F_SOME-STRING.raw.gz"
SOME-STRING
gawk --re-interval '{match ($0,$regexp,arr); print arr[5]}' <<< "20100613_M4_28007834.005_F_OTHER-STRING-W0.40+045.raw.gz"
OTHER-STRING

怎样才能达到想要的效果呢。

Thanks.


您需要能够使用环视,我认为 awk/gawk 不支持这一点,但是grep -P does.

$ pat='(?<=[0-9]{8}_M[0-9]_[0-9]{8}\.[0-9]{3}_._)(.*?)(?=(-W.*)?\.raw\.gz)'
$ echo "20100613_M4_28007834.005_F_SOME-STRING.raw.gz" | grep -Po "$pat"
SOME-STRING
$ echo "20100613_M4_28007834.005_F_OTHER-STRING-W0.40+045.raw.gz" | grep -Po "$pat"
OTHER-STRING
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 awk 将特定子字符串与正则表达式匹配 的相关文章

  • 为什么我不能将 Unix Nohup 与 Bash For 循环一起使用?

    例如 此行失败 nohup for i in mydir fasta do myscript sh i done gt output txt bash syntax error near unexpected token do 正确的做法是
  • 在 R 中分割并提取字符串的一部分(在“.”和数字之间)

    我有一个字符变量 companies 观察结果如下 612 Grt Am Mgt Inv 7 33 77 威克斯4 61 265 王实验室8 75 9 CrossLand 节省 6 32 228 JPS纺织集团2 00 我试图将这些字符串分
  • 将存储在变量中的正则表达式与量词组合的正确语法是什么?

    我知道堆栈溢出中已经有很多关于在正则表达式中使用变量的问题 并且如果变量是一个单词 或者只需要匹配一次 我设法使其工作 但是 一旦我添加特殊字符 空格和量词 我就无法让它匹配 例如 我想匹配中的任何内容some var任何包含它的 3 个连
  • 为什么 iTerm2 中不显示 git 颜色

    所以我有我的 gitconfig 设置来处理颜色 在终端中它工作得很好 看起来也不错 然而 在 iTerm2 中 除非我为 git 设置反向属性 否则我的 gitconfig 根本不会显示颜色 然后它们就出现了 但是谁喜欢相反的颜色呢 为什
  • JavaScript 上的正则表达式;检查多个字符串之一的实例

    我已经做了很多服务器端表单验证 但到目前为止 我所做的唯一客户端表单验证是检查 null 空白条目 例如 if value value null 我现在正在检查用户输入的粗俗内容 并发现使用 javascript 成功检查了这些内容 合并到
  • cron 作业不适用于 xwindow

    我在 crontab 中有以下行 1 xeyes 它不显示任何 xwindow 但相反 1 touch somefile txt 工作正常 尝试在谷歌上搜索但没有得到任何具体答案 如果您运行的命令使用 X 服务器 您必须告诉 cron 在哪
  • 如何在shell脚本中扩展相对路径

    我正在编写一个脚本来使用 bash 在 linux 2 6 上设置环境变量 因此该脚本包含如下命令 export SRC DIR export LIBPATH SRC DIR lib 问题是 当我尝试 echo LIBPATH 时 它显示
  • 转义 re.sub 的 repl 参数

    我想确定repl的论证re sub是转义 因此任何特殊序列如 1不被解释 gt gt gt repl r 1 gt gt gt re sub X repl X X gt gt gt re sub X desired escape funct
  • $@ 中 args 的 bash 参数大小写

    我有一个带有一长串可选参数的脚本 有些具有相关的值 Such as script first 2012 12 25 last 2012 12 26 copy remove script first 2012 12 25 因此有以下案例陈述
  • 在Python中检测包含非英文字符的字符串

    我有一些混合有英文字母和非英文字母的字符串 例如 w 1991 2 如何使用正则表达式或 Python 中的任何其他快速方法识别这些类型的字符串 我不喜欢将字符串中的字母与字母列表进行逐一比较 而是一次性快速完成此操作 您可以检查该字符串是
  • sed:用匹配的模式替换第 n 个单词?

    我有一个具有以下特征的文本文件 每行至少有三个由空格分隔的 单词 单词 可以是任何字符或字符串 我在一些行中附加了一些注释 并提出了对原始单词进行更改的初步建议 现在想使用 sed 为我进行这些更改 因此 为了提供更清晰的图片 我的文件如下
  • 仅匹配单词或字符串中的撇号

    我正在寻找一个可以匹配的Python正则表达式 didn t 并仅返回紧接在撇号前面的字符 例如 t 但不是 d or t 在开始和结束时 我努力了 w w 但它只匹配开头的撇号 更多示例 I m 应该只匹配 m并不是 I Erick s
  • 如何在每个 xargs 命令之间休眠 1 秒?

    例如 如果我执行 ps aux awk print 1 xargs I echo 我想让 shell 在每次之间休眠 1 秒echo 如何更改我的 shell 命令 您可以使用以下语法 ps aux awk print 1 xargs I
  • 将匹配的值传递给函数,并替换为返回值

    我如何让 Bash 匹配正则表达式 而不是用常量字符串替换值 而是将匹配的值传递给函数 然后从函数的返回值中获取要替换的值 像下面的伪代码一样 它替换了每一个匹配项 a d 具有相同的字符 但大写 function uppercase ec
  • 如何在 shell 中解码 URL 编码的字符串?

    我有一个文件 其中包含已编码的用户代理列表 例如 Mozilla 2F5 0 20 28Macintosh 3B 20U 3B 20Intel 20Mac 20OS 20X 2010 6 3B 20en 我想要一个 shell 脚本 它可以
  • bash - 从文本文件中删除多行不同的文本

    我正在处理大量日志文件 并且大多数日志文件都有大量被记录多次的重复字符串 为了使与此类事情没有太多关系的其他人 也为我自己 轻松查看日志 我想制作一个脚本来删除一些可能对其他人造成 误报 的文本行 嘿管理员 我多次出现这些错误 gt 叹息
  • 使用sed插入文件内容

    我试图在给定模式之前插入文件内容 这是我的代码 sed i pattern i r scriptPath adapters default permissions xml manifestFile 它添加路径而不是文件的内容 有任何想法吗
  • Python 按照层次结构按多个分隔符分割字符串

    我只想根据多个分隔符 例如 and 和 按顺序分割字符串一次 例子 121 34 adsfd gt 121 34 adsfd dsfsd and adfd gt dsfsd adfd dsfsd adfd gt dsfsd adfd dsf
  • 如何仅替换多个文件中记事本++中的第一个文本实例?

    我正在努力更新一个网站并进行一些更改 并且我已经成功使用标准查找和替换搜索对多个文件进行了大部分更改 我的 f r 中只留下一个错误需要修复 但它在整个文档中出现了几次 我只想替换第一个实例 这是唯一一次错误 div class boxb
  • 为什么 "asdf".replace(/.*/g, "x") == "xx" ?

    我偶然发现了一个令人惊讶的 对我来说 事实 console log asdf replace g x Why two替代品 似乎任何没有换行符的非空字符串都会产生此模式的两个替换 使用替换函数 我可以看到第一个替换是整个字符串 第二个替换是

随机推荐

  • 函数指针上的未知类型 F TYPE

    include
  • 数据库设计1对1关系

    我的数据库设计不正确 我应该在开发过程中解决这个问题吗 假定 user 表与 userprofile 表具有 1 1 关系 然而 实际设计中 用户 表与 用户配置文件 表具有 1 关系 一切正常 但无论如何应该修复它吗 做一件事 User
  • 摆动刷新周期

    我试图了解何时使用重新验证 重绘 打包 令人惊讶的是 我没有找到详细的底层文档 请随意链接 到目前为止我已经明白这都是 RepaintManager 的责任 油漆 重新油漆指的是脏 干净的东西 pack validate revalidat
  • 试图使用加密来混淆我的项目打破了它

    我试图尝试不同的混淆选项 为了做到这一点 我首先尝试了加密货币 以下是我遵循的步骤 打开加密向导并选择一些选项 选择我的解决方案文件 完成向导后 我看到有些 Dll 被很好地混淆了 但我的项目现在无法构建 我注意到的两件事是 我的文件夹中有
  • 在 jFrame 中启用右键单击

    嘿 我正在寻找如何使用 NetBeans 在 jFrame 中启用 仅且仅 右键单击并显示弹出菜单 使用我的代码 private void formMouseClicked java awt event MouseEvent evt pop
  • render_views 在 rspec 中做什么?

    我对 rspec 很陌生 对 Rails 也很陌生 在为控制器编写测试用例时 我注意到render views经常使用 这是做什么的 如果我不调用它会发生什么 它呈现控制器规范中的视图 如果不放置 render views 视图将不会渲染
  • Handler、MessageQueue、Looper,它们都是运行在UI线程上的吗?

    我正在尝试解决线程问题 并且我知道我可能会使用Handler将消息 可运行对象发布到MessageQueue 这又被Looper并发送回Handler进行加工 如果我发帖到Handler在我的活动中 是Activity Handler Me
  • 如何获得具有超载字段名称的经典镜头?

    我正在尝试为具有相同字段名称的记录构建镜头 除此之外 我试图 包装 扩展 这些基本记录 并希望相同的字段名称适用于包装 扩展的记录 我相信 优雅的镜头就是这样做的 我如何让以下内容发挥作用 Data types for context of
  • r - 如何在 normalizePath 中指定路径,或解决与其关联的此错误?

    我正在学习 R 并将其安装在我的办公室计算机上 我没有计算机的管理员权限 因为我什至必须致电IT人员进行安装 然后我安装一个包 一开始输入时不起作用 例如 install packages thepackage 错误信息是这样的 Error
  • Vim:领导不工作

    当尝试使用时vim latexsuite的映射 使用的是Leader不工作 nmap n
  • 证明字符串算法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 Windows 上将 NumPy 与 BLAS 链接

    我正在尝试在 Windows 系统上安装 Theano 并且需要安装 BLAS 和 LAPACK 我的 System32 文件夹中有这些的 dll 文件 当我运行 numpy config来自 Anaconda 的 show 库的路径正确显
  • 安装后如何更改 Cygwin 主文件夹?

    我刚刚安装了 Cygwin 看起来 bash 提示符中的主目录位于我的 Z 驱动器上 那不是我想要的地方 我怎样才能改变这个 从 Cygwin 1 7 34 开始 http www cygwin com cygwin ug net ov n
  • 旋转 LayerDrawable 中的单个 RotateDrawable

    我正在构建一个带有某种指南针的应用程序 并且我想使用 LayerDrawable 来绘制指南针并为其设置动画 LayerDrawable 由用于指南针背景的静态背景图像和用于旋转部分的 RotateDrawable 组成 这是我的可绘制资源
  • 如何告诉 VS Code 中的自动格式在打开大括号之后和关闭大括号之前不要插入空格?

    Whenever I use the auto format shortcut Shift Alt k in Visual Studio Code inside a file that contains this piece of code
  • MSSQL 选择前 10 名获胜分数,包括并列以及每个类别中至少一个

    我使用以下语句获得了一些帮助 找到了前 10 名分数 包括并列条目 select T EntryID T CategoryID T Score from select EntryID CategoryID Score dense rank
  • 将 Github 分叉到 AzureDevops

    我想将 github 存储库分叉到 AzureDevOps 中 同时保留 AzureDevOps 中的功能 以按照在 github 中分叉存储库的方式不断从 github 中提取更改 这是否可行 在路线图上吗 我想将 github 存储库分
  • 有没有在android中使用roboguice和fragment的简单例子?

    我在寻找使用 Fragments RoboGuice 的工作示例时遇到问题 当您尝试使用 Android 片段事务管理器添加 删除片段时会出现此问题 一旦您告诉片段从 RoboFragment 继承 事务管理器就不再认为该类是片段 因为它扩
  • 字母表中的加密和解密 - Python GCSE

    我目前正在尝试为学校编写一个程序 以便加密和解密输入的消息 我需要加密或解密的消息仅在字母表中 没有其他符号或密钥 例如 使用消息车加密输入的偏移量为 5 我希望它输出 afs 有人可以帮忙吗 这是我目前的代码 def find offse
  • 使用 awk 将特定子字符串与正则表达式匹配

    我正在处理特定的文件名 并且需要从中提取信息 文件名的结构类似于 20100613 M4 28007834 005 F RANDOMSTR raw gz RANDOMSTR 是最多 22 个字符的字符串 并且可能包含 或不包含 格式为 W