Если у вас есть доступ к 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();
}
Вы можете настроить код для обработки различных символов-разделителей, символов кавычек, числовой сортировки и т. Д.