Linuxボックスにアクセスできる場合は、sort
上記のように使用してください。ただし、Javaである必要がある場合は、少なくとも既存のライブラリを使用してCSVファイルを解析します。すべてのコーナーケースを正しく処理したい場合、フォーマットは解析するのが非常に複雑です。OpenCSVのようなライブラリをお勧めします。
このコードスニペットは、ライブラリの使用方法を示しています(すべてのエラー処理は省略されています!)
/**
* Sorts a CSV file by a fixed column.
*
* @param col The zero-based column to sort by.
* @param in The input CSV file.
* @param out The output writer to receive the reordered CSV.
*/
public static void sort(final int col, final Reader in, final Writer out)
throws IOException {
final List<String[]> csvContent = new ArrayList<String[]>();
// parse CSV file
final CSVReader reader = new CSVReader(in);
String[] line;
while ((line = reader.readNext()) != null) {
csvContent.add(line);
}
reader.close();
// sort CSV content
Collections.sort(csvContent, new Comparator<String[]>() {
@Override
public int compare(final String[] o1, final String[] o2) {
// adjust here for numeric sort, etc.
return o1[col].compareTo(o2[col]);
}
});
// write sorted content
final CSVWriter writer = new CSVWriter(out);
writer.writeAll(csvContent);
writer.close();
}
さまざまな区切り文字、引用文字、数値の並べ替えなどを処理するようにコードを調整できます。