如何在 Perl 中进行字母数字排序?

2024-03-23

我有一个如下所示的文件:

80,1p21
81,19q13
82,6p12.3
83,Xp11.22
84,3pter-q21
86,3q26.33
87,14q24.1-q24.2|14q24|14q22-q24
88,1q42-q43
89,11q13.1
90,2q23-q24
91,12q13
92,2q22.3
93,3p22
94,12q11-q14
95,3p21.1
97,14q24.3
98,2p16.2

我想根据第二列对它们进行排序。第一列也应该相应改变。当您在 Perl 中使用“排序”命令时,它不会执行此操作,因为它说它不是数字。有没有办法在 Perl 中按 alpha 数字对事物进行排序?


如果你读过排序的文档 http://perldoc.perl.org/functions/sort.html,您会发现不需要在 Perl 中进行数字排序。您也可以进行字符串比较。

@sorted = sort { $a cmp $b } @unsorted;

但这仍然给你带来了一个问题,例如,19q 会排在 6p 之前。因此,您可以编写自己的排序函数,该函数可以在进行比较之前进行您想要的任何转换。

@sorted = sort my_complex_sort @unsorted;

sub my_complex_sort {
  # code that compares $a and $b and returns -1, 0 or 1 as appropriate
  # It's probably best in most cases to do the actual comparison using cmp or <=>

  # Extract the digits following the first comma
  my ($number_a) = $a =~ /,(\d+)/;
  my ($number_b) = $b =~ /,(\d+)/;

  # Extract the letter following those digits
  my ($letter_a) = $a =~ /,\d+(a-z)/;
  my ($letter_b) = $b =~ /,\d+(a-z)/;

  # Compare and return
  return $number_a <=> $number_b or $letter_a cmp $letter_b;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Perl 中进行字母数字排序? 的相关文章

  • Perl Moose TypeDecorator 错误。我该如何调试?

    我最近遇到了一个问题 非常感谢您的见解 我在圣诞节前在 PerlMonks 上发布了类似的问题 并提供了一些从 MooseX Declare 切换的反馈 http www perlmonks org node id 877703 1 我现在
  • 基数首先排序最重要的还是最不重要的,哪个更快?

    我一直在研究基数排序实现 到目前为止粘贴在下面的代码 代码是用 Java 编写的 但在 C C 中应该也能正常工作 正如您从实现中看到的 我首先执行最高有效位 即整数的第 31 位 这似乎更快 因为一旦子组完成 就不再需要迭代 例如 打个比
  • Perl 删除目录中的所有文件

    我怎样才能删除allPerl 中目录中的文件 不删除目录 我的主机只允许最多 250 000 个 文件 而我的 tmp 文件夹会在所有会话 cookie 运行的情况下快速填充 250 000 个 qouta 在这种情况下我无法删除 tmp
  • Perl 中如何释放内存?

    我的代码如下所示 my var my var new while 1 while my k v each var a sub v var A map var var new keys var new var new B sub a sub
  • 当 docvalues=true 时,小写过滤器工厂不起作用

    我正在尝试使用 Solr 实现不区分大小写的排序并面临这个问题 https stackoverflow com questions 31745713 solr case insensitive sort not working Copied
  • Perl 中的布尔函数应该返回什么值?

    简短的问题 在 Perl 代码库中一致表示真假的最佳方法是什么 1 0 1 Perl 原生布尔运算符的特殊空字符串 return undef 即空列表 问题背景 我们都知道 Perl 在布尔值方面非常灵活 就像大多数事情一样 例如 Perl
  • 像多米诺骨牌一样对 Python 中的元组进行排序/查找顶点连接

    我有一个像这样的整数元组列表 L 1 2 7 6 2 3 8 5 3 8 5 7 每对定义两个顶点之间的边 我想找到顶点连接性 没有循环 元组总是像多米诺骨牌一样唯一地链接起来 因此在这种情况下 排序列表应如下所示 L sorted 1 2
  • C++并行std::sort用于浮点值

    我有一个包含数百万个浮点值的大文件 我可以使用轻松对它们进行排序std sort通过将文件读入vector现在 例如 std vector
  • Python:对这个字典进行排序(字典中的字典)

    d a k 1 b whatever b k 2 b sort by k 想要在 python 中按 k 降序对这个字典进行排序 有点棘手 请帮忙 dicts 是无序的 所以没有办法直接对它们进行排序 但如果你是 愿意转换dict进入 键
  • .bat 文件将文件排序到文件夹中

    对于我的图片集 我希望文件夹中的所有图片按日期自动分类到文件夹中 幸运的是 这些文件已经以时间戳命名 2012 07 15 12 21 06 jpg 2012 07 15 12 21 26 jpg 2012 07 16 12 12 50 j
  • 如何从 R 运行带有特定模块的 perl 脚本?

    我可以从终端运行 perl 脚本 myperlscript pl 没有任何问题 但是 如果我尝试从 RStudio 中运行相同的 perl 脚本 则会出现以下错误 command lt myperlscript pl outputfile
  • 如何在 Perl 中使用 use strict 一次一行处理多行字符串?

    我正在尝试找出 PBP 批准的正确方法来一次一行处理多行字符串 许多 Perl 编码人员建议将多行字符串视为文件句柄 除非您在脚本中使用 use strict 否则它可以正常工作 然后 您会收到编译器发出的警告 提示在使用严格引用时无法使用
  • Perl Tk 模块有哪些缺点?

    与在 Perl 中创建 GUI 的其他解决方案相比 Tk 模块有哪些缺点 我最近浏览了 Perl 的各种 gui 模块 这是我的总结 免责声明 最终我发现现有模块都不能满足我的需求 所以我开始编写自己的 gui 工具包 Tk 工作起来很不错
  • 在压缩存档内的文本文件上运行“head”,而不解压存档

    问候 我接手了之前的团队并编写了处理 csv 文件的 ETL 作业 我在 ubuntu 上结合使用 shell 脚本和 perl csv 文件很大 它们以压缩档案形式到达 解压后 很多都超过 30Gb 是的 那是 G 旧进程是在 cron
  • 在 C# 中对 Directory.GetFiles 的结果进行排序

    我有这段代码来列出目录中的所有文件 class GetTypesProfiler static List
  • 如何确保我的代码永远不会直接退出?

    eval require file subsequent code goes here If file包含一个exit语句 后面的代码就没有机会运行 如何解决以便后续代码始终有机会运行eval已经完成了 中止是不可能的exit call f
  • 按文件名对 $_FILES 进行排序 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 他俩 如您所知 在新的 HTML5 中 您可以非常轻松地上传多个文件 但我这里的问题是如何按列 名称 对 FILES 数组进行排序 这是
  • “Desort”向量(撤消排序)

    在Matlab中 sort返回排序后的向量和索引向量 显示哪个向量元素已移动到以下位置 v ix sort u Here v是一个包含所有元素的向量u 但已排序 ix是一个向量 显示每个元素的原始位置v in u 使用 Matlab 的语法
  • Perl 非贪婪

    我遇到非贪婪正则表达式 regex 的问题 我已经看到有关于非贪婪正则表达式的问题 但它们没有回答我的问题 Problem 我正在尝试匹配 lol 锚点的 href Note 我知道这可以通过 Perl HTML 解析模块来完成 我的问题是
  • 如何在vb.net中对datagridview的3列进行排序

    下面我想对 ProductCode ColorCode 和 Size 列进行排序 请指导 对 大小 列中的信息进行排序 Size Number sequence XS 1 S 2 M 3 L 4 XL 5 XXL 6 2L 7 3L 8 4

随机推荐

  • 如何获取德威远程的 URL

    我希望能够获得像这样的 URLhttps github com user repo git给定一个远程名称 例如origin 到目前为止 我只设法获取提交哈希 gt gt gt from dulwich import porcelain g
  • 在 Python 中临时更改变量的值

    Python 3 4 提供了这个简洁的工具来临时重定向 stdout From https docs python org 3 4 library contextlib html contextlib redirect stdout wit
  • 通过 Rest c# httpClient 创建 jira 问题

    我读过 atlassian 上的一个答案https answers atlassian com questions 79902 using httpclient c to create a jira issue via rest gener
  • C# - 为什么在实现 IEnumerable 接口时要实现两个版本的 Current?

    我假设以下示例提供了我们在实现 IEnumerable 接口时应遵循的最佳实践 https learn microsoft com en us dotnet api system collections ienumerator movene
  • Plon 和 Asp.Net 集成

    How to 制作一个 Asp Net 应用程序来识别经过身份验证的克隆用户 他 她的 ID 角色和任何其他可用数据 反之亦然 在我的 asp net 应用程序中显示 plone 内容或在 plone 中显示一些特定于应用程序的数据 从 A
  • ColdFusion:在 CFC 中省略变量关键字是否安全?

    在 ColdFusion 组件 CFC 中 是否有必要对变量范围的变量使用完全限定名称 如果我改变这个 我会给自己带来麻烦吗
  • 如何在 TypeScript 中迭代通用对象的键?

    我需要迭代一个仅键入为 对象 的大对象 它包含未知数量的相同类型的对象 在较早的帖子中 我找到了在自定义 Symbol iterator 函数中使用生成器来使大对象可通过 for of 循环进行迭代的解决方案 但在我看来 现在已经是 201
  • numpy `arange` 超过最终值

    我原以为 numpy 的arange start end 生成 start end 范围内的值 下面的示例表明这并不总是正确的 最终值大于end import numpy as np start 2e9 end start 321 step
  • 导入文件时如何跳过第一行

    我正在尝试导入一个 xlsx文件输入Laravel5 7版本使用Maatwebsite excel版本 3 1 我想要实现的是跳过文件的第一行 以避免在数据库中导入列标题 我尝试使用版本 2 语法 调用skip method public
  • 强制从 US-ASCII 编码为 UTF-8 (iconv)

    我正在尝试将一堆文件从 US ASCII 转码为 UTF 8 为此 我使用 iconv iconv f US ASCII t UTF 8 file php gt file utf8 php 我的原始文件是 US ASCII 编码的 这使得转
  • WiX:旧版本不会在“添加/删除程序”列表中消失

    我有一个使用 WiX 安装和升级的 Windows 服务 效果很好 非常快 唯一的问题是 如果我从 1 0 升级到 1 1 两个副本在 添加 删除程序 列表中仍然有条目 那么 当我执行更新时 如何确保 WiX 删除 添加 删除程序 列表中旧
  • 使用 Chrome 开发者工具调试 onFocus 事件?断点后无法返回焦点

    我正在尝试调试 JavaScriptonFocus附加到页面上一堆文本框的事件 选择一个文本框然后按 Tab 键切换到下一个文本框时会出现此错误 我试图通过在其中放置一个断点来调试它onFocus使用 Chrome 开发者工具的事件 我面临
  • Prolog 时间重叠问题

    假设我有这个知识库 free ann slot time 8 0 time 9 0 free ann slot time 10 0 time 11 0 free bob slot time 7 0 time 8 30 free bob sl
  • Jenkins Copy Artifact 解析复制的构建 ID

    我在 Jenkins 2 73 1 中使用 在多分支管道中复制神器插件 https wiki jenkins io display JENKINS Copy Artifact Plugin要从其他两个管道获取最后成功的工件 请参阅我的 Je
  • 范围类型如何影响 EntityQuery 对象的重用方式

    for UserList userList UserList Component getInstance UserList class ScopeType METHOD userList getUserByEmailAddress emai
  • iPhone 旋转和全屏视频

    我遇到了一个奇怪的问题 需要帮助解决 我的应用程序始终以纵向模式运行 我明确希望它是这样的 在应用程序的一处 我有一个 UIWebView 它工作得很好 正如预期的那样 此 Web 视图并非始终显示 而是动态添加到主视图并根据用户操作删除
  • 如何加载本地JSON文件?

    我正在尝试通过 jquery 加载本地 JSON 文件 代码工作正常 但数据在数组中不可用 getJSON ajax data myjasonfile json function json console log json 我的控制台仅显示
  • 函数指针和返回类型转换

    假设我有一个执行一些副作用然后返回答案的函数 int foo perform some side effect return 42 我要绑定foo到函数指针 但我对答案不感兴趣 只是副作用 void bar foo 然而 这似乎是一个类型错
  • 正则表达式提取“--!!”之后的所有文本在 R dplyr 中

    我试图在 R 中使用 dplyr 来提取由变量的某些实例过滤的数据框中变量字符串后面的子字符串name在下面的例子中 我正在尝试将所需的结果传递到一个名为的新变量中income rent 我是正则表达式的新手 我的尝试是 income ca
  • 如何在 Perl 中进行字母数字排序?

    我有一个如下所示的文件 80 1p21 81 19q13 82 6p12 3 83 Xp11 22 84 3pter q21 86 3q26 33 87 14q24 1 q24 2 14q24 14q22 q24 88 1q42 q43 8