我有这个文件:
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
谢谢
这有点乱,但做你想要的:
原文链接:https://www.f2er.com/bash/383452.htmlpaste - - - < File | sort -k18,18g | xargs -n 6
输入格式的问题是sort无法对输入行组进行操作,因此您需要将每个组转换为一行,对其进行排序,然后将其转回.仅当输入“USER”行始终位于组中的最后一行时,此选项才有效.