当前位置: 首页 > 面试题库 >

在一行的最后一个字段上排序

包承望
2023-03-14
问题内容

对行列表进行排序(在每行的最后一个字段上排序)的最简单方法是什么?每行可能具有可变数量的字段。

就像是

sort -k -1

是我想要的,但是sort(1)不需要负数来从末尾而不是从开始选择字段。

我也希望能够选择字段分隔符。

编辑:为问题添加一些特殊性:我要排序的列表是路径名列表。路径名可以是任意深度,因此字段数是可变的。我想对文件名组件进行排序。

此附加信息可能会更改操作行以提取最后一个字段的方式(可以使用basename(1)),但不会更改排序要求。

例如

/a/b/c/10-foo
/a/b/c/20-bar
/a/b/c/50-baz
/a/d/30-bob
/a/e/f/g/h/01-do-this-first
/a/e/f/g/h/99-local

我希望此列表按文件名排序,所有文件名均以数字开头,该数字指示应读取文件的顺序。

我在下面添加了我的答案,这是我目前的做法。我曾希望有一种更简单的方法-也许是另一种排序实用程序-也许不需要操纵数据。


问题答案:

这是一个Perl命令行(请注意,您的shell可能需要您对$s 进行转义):

perl -e "print sort {(split '/', $a)[-1] <=> (split '/', $b)[-1]} <>"

只需将列表通过管道传送到其中,或者如果列表在文件中,则将文件名放在命令行末尾。

请注意,此脚本实际上并不会更改数据,因此您不必注意使用的分度数。

这是示例输出:

>perl -e "print sort {(split '/', $a)[-1] <=> (split '/', $b)[-1]} " files.txt
/a/e/f/g/h/01-do-this-first
/a/b/c/10-foo
/a/b/c/20-bar
/a/d/30-bob
/a/b/c/50-baz
/a/e/f/g/h/99-local


 类似资料:
  • 问题内容: 具体来说,我有一个模型,该模型具有这样的字段 我希望能够轻松抓取最新的对象。最简单/最佳的方法是什么? 我会想要以下类似的东西吗? 问题答案: 您还可以通过放入模型的Meta来简化事情,然后您就可以 有关更多信息,请参阅文档。您可能还需要设置Meta选项。

  • 问题内容: 假设我有一个小型数据库,其中包含三列:“ id1”,“ id2”和“ date”。我在字段“ id1”上建立数据库索引,因为它是一个经常选择的字段(许多选择查询都使用ex来运行:其中“ id1” = 125548)。 在某些特定的查询中,我需要根据未建立索引的表中的“日期”字段对用户的记录进行排序。我的好奇心是如果对日期进行排序操作(基本上是按订单执行的操作)字段将在整个数据库上运行,

  • 我看到了我认为是一种错误的行为。@InjectMocks似乎不会在每种测试方法之前创建一个新的测试主题。就像“模拟”一样。在下面的示例中,如果Subject.section是最终的@Test失败。如果不是最后都通过。我目前的解决方案是使用@BeforeClass,但这并不理想。 Subject.java: Section.java: 受试者测试。JAVA 干杯。

  • 问题内容: 如何获取网址的最后一段?我有以下脚本,该脚本显示了单击的锚标记的完整网址: 如果网址是 如何只在警报框中显示URL的“文件”部分? 问题答案: 您还可以使用lastIndexOf()函数来定位字符在URL中的最后一次出现,然后使用substring()函数从该位置开始返回子字符串: 这样,您就可以避免创建包含所有URL段的数组。

  • 我需要整理一份表格。它包含一个Tuple4 有什么建议吗? 问候汉斯

  • 我使用的是Apache Spark,它的数据帧如下所示: 我想按字段分组,以获得的所有历元时间戳。然后我想按时间戳升序对历代进行排序,然后取第一个和最后一个历代。 我使用了下面的查询,但是和历元值似乎是按照它们在原始数据帧中出现的顺序获取的。我想把第一个和最后一个从一个有序的升序中取出来。 如何从按升序历元排序的历元列表中检索第一个和最后一个历元?