gpt4 book ai didi

linux - Bash/Linux 使用自定义字段分隔符按第 3 列排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:42:53 24 4
gpt4 key购买 nike

我似乎无法按照我的意愿对以下数据进行排序;

find output/ -type f -name *.raw | sort 
output/rtp.0.0.raw
output/rtp.0.10.raw
output/rtp.0.11.raw
output/rtp.0.12.raw
output/rtp.0.13.raw
output/rtp.0.14.raw
output/rtp.0.15.raw
output/rtp.0.16.raw
output/rtp.0.17.raw
output/rtp.0.18.raw
output/rtp.0.19.raw
output/rtp.0.1.raw
output/rtp.0.20.raw
output/rtp.0.2.raw
output/rtp.0.3.raw
output/rtp.0.4.raw
output/rtp.0.5.raw
output/rtp.0.6.raw
output/rtp.0.7.raw
output/rtp.0.8.raw
output/rtp.0.9.raw

在上面的示例中,我没有将任何参数传递给 sort 命令。无论我使用什么选项,我都无法接近我想要的结果。我想要以下输出;

find output/ -type f -name *.raw | sort 
output/rtp.0.0.raw
output/rtp.0.1.raw
output/rtp.0.2.raw
output/rtp.0.3.raw
output/rtp.0.4.raw
output/rtp.0.5.raw
output/rtp.0.6.raw
output/rtp.0.7.raw
output/rtp.0.8.raw
output/rtp.0.9.raw
output/rtp.0.10.raw
output/rtp.0.11.raw
output/rtp.0.12.raw
output/rtp.0.13.raw
output/rtp.0.14.raw
output/rtp.0.15.raw
output/rtp.0.16.raw
output/rtp.0.17.raw
output/rtp.0.18.raw
output/rtp.0.19.raw
output/rtp.0.20.raw

我尝试使用 -t . 选项将字段分隔符设置为句号。我还尝试了 -k 选项来指定字段,以及 -g-h-n,但所有选项都无济于事。除非我没有正确理解手册页并忽略了我的答案,否则我在手册页中看不到任何其他内容可以满足我的要求。

我能否使用 sort 生成我需要的结果,如果可以,如何生成?

此外,它很少见,但有时显示为“0”的第 2 列一直向下可能会增加。可以将其考虑在内吗?

最佳答案

这使得它:

$ sort -t'.' -n -k3 a
output/rtp.0.0.raw
output/rtp.0.1.raw
output/rtp.0.2.raw
output/rtp.0.3.raw
output/rtp.0.4.raw
output/rtp.0.5.raw
output/rtp.0.6.raw
output/rtp.0.7.raw
output/rtp.0.8.raw
output/rtp.0.9.raw
output/rtp.0.10.raw
output/rtp.0.11.raw
output/rtp.0.12.raw
output/rtp.0.13.raw
output/rtp.0.14.raw
output/rtp.0.15.raw
output/rtp.0.16.raw
output/rtp.0.17.raw
output/rtp.0.18.raw
output/rtp.0.19.raw
output/rtp.0.20.raw

如您所见,我们需要不同的选择:

  • -t'.' 将点 . 设置为字段分隔符。
  • -n 使其成为数字排序。
  • -k3 检查第 3 列。

更新

这也使得它:

$ sort -t'.' -V -k2 a
output/rtp.0.0.raw
output/rtp.0.1.raw
output/rtp.0.2.raw
output/rtp.0.3.raw
output/rtp.0.4.raw
output/rtp.0.5.raw
output/rtp.0.6.raw
output/rtp.0.7.raw
output/rtp.0.8.raw
output/rtp.0.9.raw
output/rtp.0.10.raw
output/rtp.0.11.raw
output/rtp.0.12.raw
output/rtp.0.13.raw
output/rtp.0.14.raw
output/rtp.0.15.raw
output/rtp.0.16.raw
output/rtp.0.17.raw
output/rtp.0.18.raw
output/rtp.0.19.raw
output/rtp.0.20.raw

如您所见,我们需要不同的选择:

  • -t'.' 将点 . 设置为字段分隔符。
  • -V 使其根据版本排序。
  • -k2 检查第二列。

关于linux - Bash/Linux 使用自定义字段分隔符按第 3 列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17929210/

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