具有“独特部分正则表达式”的高级“uniq”

2023-12-14

uniq是一个工具,可以一次过滤文件中的行,以便仅显示唯一的行。uniq有一些支持来指定两条线何时“等效”,但选项有限。

我正在寻找一个工具/扩展uniq允许人们输入正则表达式。如果两条线捕获的组相同,则两条线被视为“等效”。对于每个等价类,仅返回“第一个匹配项”。

Example:

file.dat:

foo!bar!baz
!baz!quix
!bar!foobar
ID!baz!

Using grep -P '(!\w+!)' -o,可以提取“独特部分”:

!bar!
!baz!
!bar!
!baz!

这意味着第一行被认为与第三行“等效”,第二行被认为与第四行“等效”。因此,仅打印第一个和第二个(第三个和第四个被忽略)。

Then uniq '(!\w+!)' < file.dat应该返回:

foo!bar!baz
!baz!quix

不使用uniq但使用 gnu-awk 你可以获得你想要的结果:

awk -v re='![[:alnum:]]+!' 'match($0, re, a) && !(a[0] in p) {p[a[0]]; print}' file
foo!bar!baz
!baz!quix
  • 使用命令行变量传递所需的正则表达式-v re=...
  • match函数匹配每行的正则表达式并返回匹配的文本[a]
  • 每次match成功后,我们将匹配的文本存储在关联数组中p并打印
  • 从而有效地得到uniq功能与regex support
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有“独特部分正则表达式”的高级“uniq” 的相关文章

  • 如何在 bash_profile 文件中添加导出语句?

    我正在尝试了解是否必须添加导出语句来在 bash profile 文件中设置变量 我该怎么做呢 例如 如果我必须添加 export AX name 那么我应该将其简单地写在文件末尾还是我还需要编写其他内容 简单写一下export AS na
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可
  • 正则表达式仅允许特定数字

    我正在寻找一个只允许输入特定数字的正则表达式 例如2 4 5 6 10 18 我尝试过类似的东西 2 4 5 6 10 18 我输入的任何内容都无法通过正则表达式 然后计算机用手指着我并大笑 我哪里出错了 单引号是不必要的 您正在寻找的正则
  • sed 和 rev shell 命令转换为 Python 脚本 [重复]

    这个问题在这里已经有答案了 有一个shell命令 我正在尝试将逻辑转换为python 但我不知道该怎么办 我需要一些帮助 shell命令是这样的 cd tests src main test ls find name vrlp while
  • 正则表达式拒绝连续字符

    我对正则表达式仍然很陌生 基本上我需要做的是创建一个接受数字和字母但不允许输入连续字符的规则 例如 abcd gt 好的 abbcd gt 坏的 我已经完成了大部分工作 但我无法弄清楚的部分是如何禁止连续字符 到目前为止我的代码 A Za
  • 如何匹配单引号字符串中的双反斜杠?

    我需要区分带有单反斜杠和双反斜杠的字符串 Perl 对它们一视同仁 print n qqq www eee rrr print n qqq www eee rrr 将给出相同的结果 qqq www eee rrr qqq www eee r
  • C++ Linux GCC 应用程序中的 GUID

    我有很多服务器运行这个 Linux 应用程序 我希望他们能够生成一个碰撞概率较低的 GUID 我确信我可以从 dev urandom 中提取 128 个字节 这可能没问题 但是有没有一种简单易用的方法来生成与 Win32 更等效的 GUID
  • 正则表达式提取大括号之间的文本

    我正在尝试提取 PHP 中花括号之间的文本 例如 欢迎 user first name 使用 site 版本 1 5 您的用户名 是 user username 您目前的声誉是 user reputation name 我用过 在某些情况下
  • 安装 JDK 时出错:keytool 命令需要已安装的 proc fs (/proc)。 Linux 的 Windows 子系统

    我尝试在 Linux 的 Windows 子系统 Ubuntu 14 04 上安装 Oracle JDK 1 7 但出现以下错误 the keytool command requires a mounted proc fs proc Jav
  • Linux 中有没有一种轻量级的方法来获取当前进程数?

    我希望我的 基于 C C 的 程序显示一个数字指示器 指示本地系统上当前有多少个进程 将经常查询正在运行的进程数值 例如每秒一次 以更新我的显示 有没有一种轻量级的方法来获取该数字 显然我可以调用 ps ax wc l 但我不想强迫计算机生
  • grep 彩色线条

    我编写了一个简单的 PHP shell 脚本 它解析文件并输出某些元素 它产生大量的输出 采用不同的 bash 颜色 绿色表示正常 黄色表示警告 红色表示错误等 在开发过程中我想过滤掉一些行 例如 所有包含红色文本的行 我可以使用grep
  • 我可以在 Ubuntu 上使用 Homebrew 吗?

    我只是尝试使用 Homebrew 和 Linuxbrew 在我的 Ubuntu 服务器上安装软件包 但都失败了 这就是我尝试安装它们的方法 sudo apt get install build essential curl git m4 r
  • Linux 中的 Windows NAmed Pipes 替代品

    我们正在将现有的 Windows 代码移植到 Linux 我们使用 ACE 作为抽象层 我们使用 Windows 命名管道与多个客户端进行通信并执行重叠操作 linux 下这个相当于什么 我检查了linux命名管道 FIFO 但它们似乎只支
  • 如何使用正则表达式限制小数点之前/之后/小数点以及整体的位数?

    我正在尝试检查数值是否具有特定数量的数字 总共不应超过 19 位数字 小数点前不能超过17位 整数部分 小数点后不得超过 4 位 小数部分 可以有小数点也可以没有 前面可以有 或 或没有 有效示例 1 1 0 0 1234567890123
  • 用于 e NetworkManager VPN 连接的 dbus 信号处理程序

    我需要开发一些在建立 VPN 连接时执行的 python 代码 VPN 由 NetworkManager 控制 我试图弄清楚如何为此使用 NM DBUS 事件 使用 dbus monitor system 我能够识别连接信号 signal
  • Ruby 在特定目录中运行 shell 命令

    我知道如何在 Ruby 中运行 shell 命令 例如 x cmd 但是 如何指定运行此命令的目录 有没有类似的脱壳方式 类似subprocess Popen在Python中 subprocess Popen r c mytool tool
  • 如何在 Ubuntu/Linux 发行版中安装 Tesseract-OCR 3.03?

    我和一个朋友有兴趣为 CV 项目训练 tesseract OCR 引擎 我们尝试使用一些包装器 例如 PyTesser 和 pyocr 但结果目前不如我们需要的那么准确 因此 我们希望尝试训练超立方体以更好地实现我们的目的 即识别食品标签上
  • 优化正则表达式以过滤数千个 HTML 选择选项

    背景 我开发了一个基于 jQuery 的穿梭小部件 https stackoverflow com a 13557000 59087对于 HTMLselect元素 因为我找不到一个经过最低限度编码并提供正则表达式过滤器来补偿的元素变音符号
  • Linux 上的“软/硬 nofile”是什么意思

    当我尝试在RedHat EL5上安装软件时 我得到了错误 软 硬nofile的期望值是4096 而默认值是1024 我设法增加了这个数字 但我不知道参数是什么 他们指的是软链接和硬链接吗 我改变的方法是 a 修改 etc security
  • 所有语言中特殊字符的 Java 正则表达式

    在我的用户输入字段中 我想允许某些特殊字符 字母和数字的组合 我应该确保正则表达式模式在输入时允许此设置任何语言 基本上我构建的这个正则表达式也应该支持 unicode 表示 如何使用 Java 中的 Pattern 类来实现这一点 这里给

随机推荐

  • 如何使用PrincipalContext搜索全局目录(整个森林)

    myUserList AppUsers new myUserList using PrincipalContext pcxt new PrincipalContext ContextType Domain domainName UserPr
  • 如何将 mysqldump 的输出分割成更小的文件?

    我需要将整个表从一个 MySQL 数据库移动到另一个数据库 我没有对第二个的完全访问权限 只有 phpMyAdmin 访问权限 我只能上传 压缩 小于 2MB 的 sql 文件 但是第一个数据库表的 mysqldump 的压缩输出大于 10
  • PHP DOM 当子级包含标签和文本节点时如何删除换行标签

    鉴于此标记
  • GLUT 程序链接错误

    我想编译一个 GLUT 程序 include
  • 为什么我的 Android 模拟器键盘是汉字模式?

    我正在使用 AVD Android 虚拟设备 调试我的 Android 应用程序 当我尝试在文本字段中输入文本时 我的字符在 IME 中被解释为中文 我不知道如何进入此模式或如何退出它 我只想输入字母键 这是一个屏幕截图 如果你正在跑步mo
  • 有没有办法在Python字典中保留重复的键[重复]

    这个问题在这里已经有答案了 有没有办法在字典中存储重复的键 我有一个特定的要求来形成请求和响应对 从特定节点到另一个特定节点的请求形成相同的密钥 我需要存储这两个 但如果我尝试将它们添加到字典中 第一个将被第二个替换 有什么办法吗 假设您想
  • 如何使用 sql server 执行 BEFORE UPDATED 触发器?

    我正在使用 Sqlserver Express 但我做不到before updated扳机 还有其他方法可以做到这一点吗 MSSQL不支持BEFORE触发器 你最接近的是INSTEAD OF触发器 但它们的行为与BEFOREMySQL 中的
  • 如何在 C++ 中禁用 OS X App Nap?

    有没有办法从 C 应用程序的源代码中禁用 App Nap 我正在使用 clang 编译器和 cmake 以下 RAII 类 改编自这个答案 会做的 if defined APPLE if MAC OS X VERSION MAX ALLOW
  • 将临时名称空间附加到搜索路径

    这个问题是这个问题的后续post因为我仍然不完全相信 就代码的鲁棒性而言 打字不会更好namespace foo 习惯而不仅仅是打字foo 并祈祷你能得到想要的结果 实际问题 我知道这严重违反了 标准 R 约定 但我们只能说我很好奇 是否可
  • 如何在 Swift 中发出 HTTP 请求?

    I read 编程语言 Swift由 Apple 在 iBooks 中编写 但无法弄清楚如何在 Swift 中发出 HTTP 请求 类似于 cURL 我需要导入 Obj C 类还是只需要导入默认库 或者是否无法基于原生 Swift 代码发出
  • 处理另一个类/文件中定义的对象的事件

    我有一个 VB NET 程序 其中有多个表单和一些我想在所有表单上访问的变量 因此我创建了一个包含一些公共变量的模块文件 我发现虽然这些变量已经被声明WithEvents 如果不首先复制到局部变量 则无法在表单上处理它们的事件 正在发生的事
  • 在元组列表中获得最大并发的有效方法是什么?

    我一直在努力以有效的方式解决这个问题 问题是 问题陈述 给定以下形式的元组列表 start1 end1 start2 end2 start3 end3 startn endn 其中 start 和 end 是正整数 每个元组代表一个时间窗口
  • 如何让android支持屏幕右下角的FloatingActionButton?

    我添加了一个FloatingActionButton到我的布局里面RelativeLayout如下
  • IE中的z索引问题

    我有一张地图 上面有一些点 用户将鼠标悬停在上面即可显示更多信息 我遇到的问题很难解释 因为只有当用户在 IE 中查看页面并且该页面托管在我的服务器上时 它才似乎是一个问题 下面的 jsfiddle 页面上的完全相同的代码可以正常工作 ht
  • 获取对象属性之间的最小/最大值的快速方法

    我在 javascript 中有一个像这样的对象 a 4 b 0 5 c 0 35 d 5 有没有一种快速方法可以获取属性中的最小值和最大值 而不必循环遍历所有属性 因为我拥有的对象很大 我需要每两秒获取一次最小值 最大值 对象的值不断变化
  • Android:获取手机硬件信息

    我正在开发告诉用户有关设备的应用程序 我问了很多关于SO的问题但没有找到答案 我想找到 型号 安卓版本 基带版本 内核版本 内部版本号 内存 我的手机 我非常感谢任何有关此问题的帮助 我在我的代码中使用了这个 所以我把所有的 Log i T
  • ER 图中的关系属性

    实体关系图中的关系是否可以有自己的关键属性 如果没有 那么我们是否必须用这个密钥创建一个单独的实体 唯一拥有自己的密钥的关系是多对多关系 这种关系的关键自然是其每个父母的外键的组合 如果关系还有其他属性 那么它根本就不是关系 它本身就是一个
  • Tortoise SVN - 将主干合并到分支 - 树冲突

    我们使用的是 SVN 1 8 我也在使用 Tortoise SVN 1 8 主要代码位于 project trunk 我将要做一个大的改变 所以我创建了一个分支 project branches x那是的副本 project trunk 作
  • JTextArea的append()方法似乎不起作用

    我们被分配创建一个简单的编译器作为家庭作业 它将接受一组指令 包含变量 条件 跳转等 并对其进行评估 这已经完成了 但我想我应该让我的程序更加 闪亮 并添加从文本文件加载指令的能力 只是为了用户舒适 然而 似乎JTextArea s app
  • 具有“独特部分正则表达式”的高级“uniq”

    uniq是一个工具 可以一次过滤文件中的行 以便仅显示唯一的行 uniq有一些支持来指定两条线何时 等效 但选项有限 我正在寻找一个工具 扩展uniq允许人们输入正则表达式 如果两条线捕获的组相同 则两条线被视为 等效 对于每个等价类 仅返