使用标题排序制表符分隔文件

时间:2013-04-19 19:50:17

标签: unix sorting

我有一个带有@blabla指定标题的文件 - 不同的文件具有不同数量的标题行,但它们都通过@符号指定标题行。

即,

@HI this is header line 1
@Bye this is header line 2
2 210 hi 1300 hl df de
9 179 hi 110 hl df de
2 190 hi 1310 hl df de
9 134 hi 190 hl df de

在标题之后,文件以制表符分隔。

任何人都知道在linux中对此文件进行排序的快速/简单方法(可能使用sort命令)。

我想在第1列(然后是第4列)对其进行排序,但将标题保留为排序版本中的标题。

帮助将不胜感激!

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以删除标题,排序然后添加标题

$ grep '^@' foo > foo.sorted; grep -v '^@' foo | sort --key=2,4 >> foo.sorted
$ cat foo.sorted 
@HI this is header line 1
@Bye this is header line 2
9 134 hi 190 hl df de
9 179 hi 110 hl df de
2 190 hi 1310 hl df de
2 210 hi 1300 hl df de

答案 1 :(得分:-2)

awk 'NR<=2{print}NR>2{print|"sort -t\"    \" -k1,1n -k4,4n"}' foo.txt