Nam*_*ata 5 awk text-processing sort
我需要根据第 6 列对输入文件进行排序,也就是分数。
输入文件:
Sc2/80 20 . A T 86 Pass N=2 F=5;U=4
Sc2/80 20 . A C 80 Pass N=2 F=5;U=4
Sc2/60 55 . G T 90 Pass N=2 F=5;U=4
Sc2/60 55 . G C 99 Pass N=2 F=5;U=4
Sc2/20 39 . C T 97 Pass N=2 F=5;U=4
Sc2/20 39 . C A 99 Pass N=2 F=5;U=4
Run Code Online (Sandbox Code Playgroud)
预期输出:
Sc2/20 39 . C T 97 Pass N=2 F=5;U=4
Sc2/20 39 . C A 99 Pass N=2 F=5;U=4
Sc2/60 55 . G T 90 Pass N=2 F=5;U=4
Sc2/60 55 . G C 99 Pass N=2 F=5;U=4
Sc2/80 20 . A T 86 Pass N=2 F=5;U=4
Sc2/80 20 . A C 80 Pass N=2 F=5;U=4
Run Code Online (Sandbox Code Playgroud)
逻辑:将输入文件的所有偶数行按照分数(降序)进行比较和排序,并打印文件对应的奇数行。如果任何分数(偶数行)相等,那么我们需要查看相应奇数行的分数,因此,较高的分数优先并首先打印。
一个可能的解决方案是将每两行放在一起,排序,然后再次拆分连接的行
awk '{ getline line; print $0, line }' input_file |
sort -k6,6nr -k15,15nr |
awk '{ $10 = "\n" $10; print }'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6181 次 |
最近记录: |