jbs*_*u32 0 sorting bash shell
这样列出了4个列表.我需要按照它排序first numerical column.列由tabs/ 分隔\t.
France \t Paris \t 13.2 \t 14.2
Germany \t Munich \t Hamburg \t 16.9 \t 16.6
Norway \t 8.9 \t 9.1
Spain \t Barcelona \t Madrid \t Malaga \t 21.2 \t 19.4
Run Code Online (Sandbox Code Playgroud)
排序后,这些列看起来像 - >
Norway \t 8.9 \t 9.1
France \t Paris \t 13.2 \t 14.2
Germany \t Munich \t Hamburg \t 16.9 \t 16.6
Spain \t Barcelona \t Madrid \t Malaga \t 21.2 \t 19.4
Run Code Online (Sandbox Code Playgroud)
它们按照分类排序8.9, 13.2, 16.9 & 21.2.
我曾尝试用类似sort -k 2n或者sort -k 3n,按照第2或第3列,其排序名单.但是,8.9, 13.2, 16.9 & 21.2位于列表中的第2,第3,第4和第5列.我怎么解决这个?
这个怎么样:
sed -e 's/^[^0-9.]*\([0-9.]\+\).*$/\1\t\0/' input | sort -n | cut -f 2-
Run Code Online (Sandbox Code Playgroud)
我们提取第一个数字字段,然后将其插入每行的开头.然后我们用数字排序所有行,然后我们删除我们在第一步中添加的东西.