[英]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.