对记录进行排序,但在Linux和Java中将标题保持在顶部

时间:2016-09-13 23:03:00

标签: java linux shell sorting unix

我需要通过第一列数字对文件中的记录进行数字排序,但我需要将标题保留在文件的顶部。 我正在使用Java的Process Builder,但我不熟悉Linux命令,所以我做错了。这就是我需要帮助的地方:

Process sort = new ProcessBuilder("/bin/bash", "-c", "((head -n -1 "     +main_file+ " | tail -n -1) | sort -n) >> " + main_file).start();

1 个答案:

答案 0 :(得分:3)

你不需要java来执行shell并执行任务,直接在shell上运行命令。

见下文

 SELECT b.playerid
      , MAX(m.birthyear + 35) AS yearid
      , SUM(IF(b.yearid = m.birthyear + 35, b.hr, 0)) AS year_hr
   FROM master m
   JOIN batting b
     ON b.playerid = m.playerid
  GROUP BY b.playerid
HAVING SUM(b.hr) > 500
 ORDER BY ... 

使用awk,按原样打印第一行。这是使用NR(Rownumber)== 1完成的。对于所有其他行,可以使用sort命令并指定要使用的列。排序键由“-k”选项定义。 “-n”表示数字排序,但您可能需要也可能不需要它,具体取决于文件的内容。