gpt4 book ai didi

linux - 对一行的最后一个字段进行排序

转载 作者:IT老高 更新时间:2023-10-28 12:39:13 30 4
gpt4 key购买 nike

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

类似

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

我希望这个列表按文件名排序,所有文件名都以数字开头,表示文件应该被读取的顺序。

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

最佳答案

awk '{print $NF,$0}' file | sort | cut -f2- -d' '

基本上,这个命令会:

  1. 在开头重复最后一个字段,用空格分隔(默认 OFS)
  2. 排序,使用完整路径($0)解决重复的文件名进行排序
  3. 剪切重复的第一个字段,f2-表示从第二个字段到最后一个字段

关于linux - 对一行的最后一个字段进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3222810/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com