AWK - 如何进行选择性多列排序?

naw*_*ita 4 sorting awk multiple-columns

在awk中,我该怎么做:

输入:

1  a  f  1  12  v  
2  b  g  2  10  w  
3  c  h  3  19  x  
4  d  i  4  15  y  
5  e  j  5  11  z  
Run Code Online (Sandbox Code Playgroud)

期望的输出,通过在$5以下位置排序数值:

1  a  f  2  10  w  
2  b  g  5  11  z  
3  c  h  1  12  v  
4  d  i  4  15  y  
5  e  j  3  19  x  
Run Code Online (Sandbox Code Playgroud)

请注意,排序应影响$4,$5$6(基于值$5),表的前一部分保持不变.

小智 5

这可以通过以下方式在多个步骤中完成paste:

$ gawk '{print $1, $2, $3}' in.txt > a.txt
$ gawk '{print $4, $5, $6}' in.txt | sort -k 2 -n b.txt > b.txt
$ paste -d' ' a.txt b.txt
1 a f 2 10 w
2 b g 5 11 z
3 c h 1 12 v
4 d i 4 15 y
5 e j 3 19 x
Run Code Online (Sandbox Code Playgroud)