使用“sort”命令按多列对 CSV 文件进行排序

2024-03-16

我有一个类似 CSV 的文件,我想按列优先级对其进行排序,例如SQL 中的“ORDER BY” https://dev.mysql.com/doc/refman/8.0/en/sorting-rows.html。例如,给定以下行,

3;1;2
1;3;2
1;2;3
2;3;1
2;1;3
3;2;1

如果“ORDER BY”是column2, column1, column3,结果将是:

2;1;3
3;1;2
1;2;3
3;2;1
1;3;2
2;3;1

我想知道如何使用获得相同的结果sortUnix 上的命令。


您需要使用两个选项sort命令:

  • --field-separator (or -t)
  • --key=<start,end> (or -k),指定排序键,即排序依据的列范围(从开始索引到结束索引)。由于您想要对 3 列进行排序,因此您需要指定-k3次,对于列2,2, 1,1, and 3,3.

把这一切放在一起,

sort -t ';' -k 2,2 -k 1,1 -k 3,3

注意sort无法处理字段包含分隔符的情况,即使它被转义或引用。

另请注意:这是一个老问题,属于 UNIX.SE,并且是那里也问了 https://unix.stackexchange.com/questions/52762/trying-to-sort-on-two-fields-second-then-first一年后。


旧答案:取决于您的系统版本sort,以下也可能有效:

sort --field-separator=';' --key=2,1,3

或者,您可能会得到“字段规范中的杂散字符”。

根据排序手册 https://man7.org/linux/man-pages/man1/sort.1.html,如果不指定排序键的结束列,则默认为行尾。

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

使用“sort”命令按多列对 CSV 文件进行排序 的相关文章

随机推荐

  • 如何使用 VBA 在众多文本 .log 文件之一中查找特定字符串?

    这是我迄今为止查找文件夹中所有日志文件的代码 但我需要能够在每个文件中找到特定的字符串 如果在一个文件中找到它 则停止查找并退出循环并报告它所在的文件名 打开文件和搜索文件的方法似乎有很多 我不知道哪种方法最好 而且我通常不使用 VBA 但
  • 正向lookbehind后跟逗号分隔列表

    我正在寻找是否有一种方法可以在积极的向后查找之后为每个逗号分隔的列表获取匹配组 例如 summertime swimming running tanning 正则表达式 到目前为止 lt summertime s Returns swimm
  • libVLCSharp 无法创建 MediaList

    我正在玩 libVLCSharp 发现了一个有线行为 实际上 我创建媒体并使用 MediaPlayer 播放它没有任何问题 但是 当我尝试从 MediaList 创建媒体时 它会中断并显示以下消息 无法在本机端执行实例化 确保你 在您的系统
  • WIF 中的主动和被动联合

    我试图了解 WIF 中主动联合和被动联合之间的区别 如果依赖方 RP 是 WCF 服务而不是 ASP NET 应用程序 则似乎可以使用主动联合 如果 RP 是 ASP NET 应用程序 则可以使用被动联合 这准确吗 因此 在 ASP NET
  • Django 中不同应用程序的不同数据库[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我的 Django 站点中有多个应用
  • 组织 Javascript 库和 CSS 文件夹结构的最佳实践[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 如何在 Web 应用程序中组织 js 和 css 文件夹 我当前的项目结构是这样的 root assets js lib css img ind
  • Apache Commons JCI 重新加载类加载器

    有人有使用 Apache Commons JCI API 的 ReloadingClassLoader 的经验吗 唯一的使用示例可以在以下页面中找到 http commons apache org jci usage html http c
  • 如何在 UIWebview 中保存本地加载的 HTML 文件

    我正在使用 UIWebView 编写一个富文本编辑器 为此 我使用了一个模板文件作为启动器 然后 当用户完成编辑但尚未发布时 我想将当前内容保存到备份 html 文件中 以防应用程序损坏 我怎么做 给你 伙计 NSFileHandle fi
  • 有没有办法阻止 HTML access key="" 被激活?

    I tried preventDefault 但我还没有成功 我缺少什么吗 如果可能的话 我会尝试全局禁用它 例如在window 似乎没有办法阻止事件触发 唯一的选择似乎是在您不希望它们工作时暂时删除 accesskey 属性 就是这样jQ
  • csproj 文件中 元素的用途是什么

    当我编辑 Web 应用程序项目时 Visual Studio 2017 15 3 1 添加
  • Angular 4 setTimeout() 具有可变延迟和等待

    我有一个事件列表timestamp 我想要的是根据timestamp 添加延迟 delay timestamp t 1 timstamp t 我知道这不太适合setTimeout 但是有一个解决方法 如果超时是恒定的 但在我的情况下不是 是
  • 创建 Openstreetmap 提取的 mbtiles 文件的最简单方法?

    我正在创建一个使用在线和离线地图的 iPhone 旅行应用程序 对于离线地图 我希望允许用户下载他们感兴趣的区域 例如伦敦 的 mbtiles 文件 该地图应包含已在 OpenStreetmap 中找到的道路等信息 我知道以下网站http
  • pandas groupby 根据条件替换

    我有一个数据集结构如下 index country city Data 0 AU Sydney 23 1 AU Sydney 45 2 AU Unknown 2 3 CA Toronto 56 4 CA Toronto 2 5 CA Ott
  • Flutter:升级Play商店版本号

    我已经使用 flutter 在 Play 商店上发布了一个应用程序 现在我想上传该应用程序的新版本 我正在尝试更改版本代码 flutter 构建 apk build name 1 0 2 build number 3 或像这样更改 loca
  • 如何在 Java 中检查文件权限(独立于操作系统)

    我有以下代码片段 public class ExampleClass public static void main String args throws FileNotFoundException String filePath args
  • 加载 word2vec 时出现 UnicodeDecodeError 错误

    详细描述 我开始使用词嵌入 并发现了大量有关它的信息 到目前为止 我知道我可以训练自己的词向量或使用以前训练过的词向量 例如 Google 或 Wikipedia 的词向量 这些向量可用于英语 但对我来说没有用 因为我正在处理以下语言中的文
  • WSO2 Identity Server 5.1.0 未在 SAML 响应中返回用户声明

    在尝试新版本的 WSO2 Identity Server 5 1 0 时 我在返回 SAML 响应中的声明时遇到问题 虽然这在 WSO2 IS 5 0 0 SP1 中有效 我已经映射了所需的声明并将它们添加到我的 SP 此外我还配置了 SP
  • 使用 go 处理文件上传

    我最近才开始玩围棋 所以我还是个菜鸟 如果我犯了太多错误 抱歉 我已经尝试解决这个问题很长时间了 但我只是不明白发生了什么 在我的 main go 文件中 我有一个主要函数 func main http HandleFunc handler
  • 使用 FactoryGirl 时不断收到 record_invalid

    很多时候 当我在规范中使用 FactoryGirl 时 我不断收到如下错误 Failure Error f FactoryGirl build my model ActiveRecord RecordInvalid translation
  • 使用“sort”命令按多列对 CSV 文件进行排序

    我有一个类似 CSV 的文件 我想按列优先级对其进行排序 例如SQL 中的 ORDER BY https dev mysql com doc refman 8 0 en sorting rows html 例如 给定以下行 3 1 2 1