@H_403_0@通过下面的示例input,密钥列表是:@H_403_0@
@H_403_0@rp,Alpha,beta-ri,beta-rs,RC@H_403_0@第二sorting键:按每行的结尾数字进行数字sorting。@H_403_0@给出以下示例input(注意每行的/foo/bar/test/example/8.2.4.0前缀是附带的):@H_403_0@我怎样才能得到python logging.deBUG()消息输出到标准输出?@H_403_0@虚拟机apt-get grub问题@H_403_0@我如何使shell脚本在linux和OS X上都可以工作?@H_403_0@让RabbitMQ自动运行?@H_403_0@为了在linux上创build一个新的用户,我应该给crypt提供什么样的价值?@H_403_0@/foo/bar/test/example/8.2.4.0-RC10 /foo/bar/test/example/8.2.4.0-RC2 /foo/bar/test/example/8.2.4.0-RC1 /foo/bar/test/example/8.2.4.0-Alpha10 /foo/bar/test/example/8.2.4.0-beta-ri10 /foo/bar/test/example/8.2.4.0-beta-ri2 /foo/bar/test/example/8.2.4.0-beta-rs10 /foo/bar/test/example/8.2.4.0-beta-rs2 /foo/bar/test/example/8.2.4.0-Alpha2 /foo/bar/test/example/8.2.4.0-rp10 /foo/bar/test/example/8.2.4.0-rp2@H_403_0@我预计:@H_403_0@/foo/bar/test/example/8.2.4.0-rp2 /foo/bar/test/example/8.2.4.0-rp10 /foo/bar/test/example/8.2.4.0-Alpha2 /foo/bar/test/example/8.2.4.0-Alpha10 /foo/bar/test/example/8.2.4.0-beta-ri2 /foo/bar/test/example/8.2.4.0-beta-ri10 /foo/bar/test/example/8.2.4.0-beta-rs2 /foo/bar/test/example/8.2.4.0-beta-rs10 /foo/bar/test/example/8.2.4.0-RC1 /foo/bar/test/example/8.2.4.0-RC2 /foo/bar/test/example/8.2.4.0-RC10@H_403_0@GoogleTest CMake不承认TEST_F:就像它不承认GTest的东西@H_403_0@在屏幕上打印消息,并同时发送到系统日志@H_403_0@从windows可执行文件复制机器代码,并在linux上运行@H_403_0@C linux的错误 – conio.h:没有这样的文件或目录@H_403_0@在C中closuresTCP侦听套接字@H_403_0@使用我的答案的变体您的原始问题 :@H_403_0@./your-script | awk -v keysInorder='rp,RC' ' BEGIN { FS=OFS="-" keyCount = split(keysInorder,a,",") for (i = 1; i <= keyCount; ++i) keysToOrdinal[a[i]] = i } { sortKey = $2 if (NF == 3) sortKey = sortKey FS $3 sub(/[0-9]+$/,"",sortKey) auxFIEldPrefix = "|" FS if (NF == 2) auxFIEldPrefix = auxFIEldPrefix FS sub(/[0-9]/,auxFIEldPrefix "&",$NF) sortOrdinal = sortKey in keysToOrdinal ? keysToOrdinal[sortKey] : keyCount + 1 print sortOrdinal,$0 } ' | sort -t- -k1,1n -k3,3 -k5,5n | sed 's/^[^-]*-//; s/|-{1,2}//'@H_403_0@./your-script表示任何命令产生你想要排序的输出。@H_403_0@请注意,一个辅助。 字符, | ,用来方便排序,假定这个字符不会出现在输入中 – 这应该是合理的安全的,因为文件系统路径通常不包含管道字符。@H_403_0@任何不在排序键列表中的字段2值(无数字后缀),排序在字段2/3值之后 ,使用字母排序。@H_403_0@虽然这与OP所寻找的不匹配,但指出sort命令具有用于版本排序的选项-V将是有用的。 它遵循ASCII表格中正确的字符顺序来完成这个工作(即大写字母在前,小写字母在下)@H_403_0@例如:@H_403_0@cat test.sort.txt /foo/bar/test/example/8.2.4.0-RC10 /foo/bar/test/example/8.2.4.0-RC2 /foo/bar/test/example/8.2.4.0-RC1 /foo/bar/test/example/8.2.4.0-Alpha10 /foo/bar/test/example/8.2.4.0-beta-ri10 /foo/bar/test/example/8.2.4.0-beta-ri2 /foo/bar/test/example/8.2.4.0-beta-rs10 /foo/bar/test/example/8.2.4.0-beta-rs2 /foo/bar/test/example/8.2.4.0-Alpha2 /foo/bar/test/example/8.2.4.0-rp10 /foo/bar/test/example/8.2.4.0-rp2@H_403_0@和排序:@H_403_0@% sort -V test.sort.txt /foo/bar/test/example/8.2.4.0-RC1 /foo/bar/test/example/8.2.4.0-RC2 /foo/bar/test/example/8.2.4.0-RC10 /foo/bar/test/example/8.2.4.0-Alpha2 /foo/bar/test/example/8.2.4.0-Alpha10 /foo/bar/test/example/8.2.4.0-beta-ri2 /foo/bar/test/example/8.2.4.0-beta-ri10 /foo/bar/test/example/8.2.4.0-beta-rs2 /foo/bar/test/example/8.2.4.0-beta-rs10 /foo/bar/test/example/8.2.4.0-rp2 /foo/bar/test/example/8.2.4.0-rp10@H_403_0@因此,在给出版本名称时注意这一点很有用。@H_403_0@这就是说,如果你坚持,这是一个使用sed强制排序的班轮:@H_403_0@cat test.sort.txt|sed -e 's/-rp/-x1xrp/;s/-Alpha/-x2xAlpha/;s/-beta-ri/-x3xbeta-ri/;s/-beta-rs/-x4xbeta-rs/;s/-RC/-x5xRC/'|sort -V|sed -e 's/xx//' /foo/bar/test/example/8.2.4.0-rp2 /foo/bar/test/example/8.2.4.0-rp10 /foo/bar/test/example/8.2.4.0-Alpha2 /foo/bar/test/example/8.2.4.0-Alpha10 /foo/bar/test/example/8.2.4.0-beta-ri2 /foo/bar/test/example/8.2.4.0-beta-ri10 /foo/bar/test/example/8.2.4.0-beta-rs2 /foo/bar/test/example/8.2.4.0-beta-rs10 /foo/bar/test/example/8.2.4.0-RC1 /foo/bar/test/example/8.2.4.0-RC2 /foo/bar/test/example/8.2.4.0-RC10@H_403_0@我发现了一个完全不同于@ mklement0建议我的解决方案。@H_403_0@#!/bin/bash echo "Enter a version :" read VERSION while read line; do find $line -type d | grep $VERSION | sort -n >> outfile.txt grep '.*-Alpha[0-9]' outfile.txt | sort -n >> outfile2.txt grep '.*-beta-ri[0-9]' outfile.txt | sort -n >> outfile2.txt grep '.*-beta-rs[0-9]' outfile.txt | sort -n >> outfile2.txt grep '.*-RC[0-9]' outfile.txt | sort -n >> outfile2.txt rm outfile.txt done <whatever.txt@H_403_0@outfile2.txt的内容:@H_403_0@/foo/bar/test/example/8.2.4.0-Alpha10 /foo/bar/test/example/8.2.4.0-Alpha8 /foo/bar/test/example/8.2.4.0-Alpha9 /foo/bar/test/example/8.2.4.0-beta-ri1 /foo/bar/test/example/8.2.4.0-beta-ri2 /foo/bar/test/example/8.2.4.0-beta-rs1 /foo/bar/test/example/8.2.4.0-beta-rs2 /foo/bar/test/example/8.2.4.0-beta-rs3 /foo/bar/test/example/8.2.4.0-RC1@H_403_0@唯一的错误是Alpha10在Alpha8之前@H_403_0@任何线索? 总结
以上是内存溢出为你收集整理的在Unix中对find命令进行sorting以遵守自定义顺序全部内容,希望文章能够帮你解决在Unix中对find命令进行sorting以遵守自定义顺序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)