如何将一组线组合在一起?

use*_*153 7 unix sorting awk

我有这个文件:

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
Run Code Online (Sandbox Code Playgroud)

对于中的每个值$1,有三行ADD,VAR,USER$3.我想根据$6带有USERin的行的值对文件进行排序(反向排序)$3.现在的问题是,我怎么能做到这一点,并在同一时间保持与相应的线路ADD,VAR排序线旁边.我不需要对其他两行进行排序; 我只需要它们就在旁边sorted.

期望的输出:

 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
Run Code Online (Sandbox Code Playgroud)

我尝试过这段代码,但它只根据行中的$6值进行排序USER:

cat File | sort -k1 | uniq | sort -g -k6 > Output
Run Code Online (Sandbox Code Playgroud)

谢谢

Phi*_*hil 5

这有点乱,但做你想要的:

paste - - - < File | sort -k18,18g | xargs -n 6
Run Code Online (Sandbox Code Playgroud)

输入格式的问题是sort无法对输入行组进行操作,因此您需要将每个组转换为一行,对其进行排序,然后将其转回.仅当输入"USER"行始终位于组中的最后一行时,此选项才有效.