unix – 如何将一组行排序在一起?
发布时间:2020-12-16 01:35:47 所属栏目:安全 来源:网络整理
导读:我有这个文件: rs1 1 ADD 0.7 0.75 0.45rs1 1 VAR 0.4 4.53 0.06rs1 1 USER NA 1.96 0.37rs2 2 ADD 1.5 0.25 0.23rs2 2 VAR 0.4 4.86 0.03rs2 2 USER NA 1.73 0.05rs3 3 ADD 0.29 0.76 0.97rs3 3 VAR 0.44 3.95 0.09rs3 3 USER 0.96 5.41 0.01 对于$1中的每
我有这个文件:
rs1 1 ADD 0.7 0.75 0.45 rs1 1 VAR 0.4 4.53 0.06 rs1 1 USER NA 1.96 0.37 rs2 2 ADD 1.5 0.25 0.23 rs2 2 VAR 0.4 4.86 0.03 rs2 2 USER NA 1.73 0.05 rs3 3 ADD 0.29 0.76 0.97 rs3 3 VAR 0.44 3.95 0.09 rs3 3 USER 0.96 5.41 0.01 对于$1中的每个值,有三行ADD,VAR,USER为$3.我想根据$3中USER的行的$6值对文件进行排序(反向排序).问题是我如何能够这样做并同时在排序的行旁边保留ADD,VAR的相应行.我不需要对其他两行进行排序;我只需要他们在排序的行旁边. 期望的输出: rs3 3 ADD 0.29 0.76 0.97 rs3 3 VAR 0.44 3.95 0.09 rs3 3 USER 0.96 5.41 0.01 rs2 2 ADD 1.5 0.25 0.23 rs2 2 VAR 0.4 4.86 0.03 rs2 2 USER NA 1.73 0.05 rs1 1 ADD 0.7 0.75 0.45 rs1 1 VAR 0.4 4.53 0.06 rs1 1 USER NA 1.96 0.37 我试过这段代码,但它只根据USER行中的$6值进行排序: cat File | sort -k1 | uniq | sort -g -k6 > Output 谢谢
这有点乱,但做你想要的:
paste - - - < File | sort -k18,18g | xargs -n 6 输入格式的问题是sort无法对输入行组进行操作,因此您需要将每个组转换为一行,对其进行排序,然后将其转回.仅当输入“USER”行始终位于组中的最后一行时,此选项才有效. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |