繁体   English   中英

如何按sed值对行进行排序?

[英]How to sort lines by sed value?

我在这样的文件中有多个网址:

https://private/report-artifact/dsop-pipeline-artifacts/container-scan-reports/anchore/enterprise/enterprise/0.6.1/2020-02-08T004236.092_2801/enterprise-0.6.1.tar
https://private/report-artifact/dsop-pipeline-artifacts/container-scan-reports/atlassian/bamboo-data-center/bamboo-agent/6.10.4/2019-12-17T185400.126_2118/bambo.tar
...

我希望它们根据最后一个值对 AZ 进行排序,即:

https://private/report-artifact/dsop-pipeline-artifacts/container-scan-reports/atlassian/bamboo-data-center/bamboo-agent/6.10.4/2019-12-17T185400.126_2118/bambo.tar
https://private/report-artifact/dsop-pipeline-artifacts/container-scan-reports/anchore/enterprise/enterprise/0.6.1/2020-02-08T004236.092_2801/enterprise-0.6.1.tar
...


我可以用sed 's|.*/||'得到最后一个参数的sed ,这给了我我正在寻找的 AZ 模式:

bambo.tar
enterprise-0.6.1.tar

但不确定如何像我想要的那样“排序”整个 url 行?

除非文件包含空格,否则 Barmar 的解决方案运行良好。 您可以使用以下内容处理空格(换行符除外):

sed 's@\(.*\)/\(.*\)@\2/\1/\2@' | sort -t/ | sed -e 's@[^/]*/@@'

但是如果路径包含换行符,那么使用sed将非常无望。 上面的 awk 更简洁一些:

awk '{print $NF,$0}' FS=/ OFS=/ | sort -t/ | sed -e 's@[^/]*/@@'

复制文件名作为附加字段,按该字段排序,然后删除额外的字段。

sed 's/[^/]*$/& &/' | sort -k 2 | cut -d' ' -f1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM