-3

我有一个具有这种格式的 CSV:

FASS339XM;4567;false;89590343<br>
940000299;4183;2019-09-02 14:12:18.461819;HW;0986481366<br>
FADS339XM;4446;true;89594343<br>
940000300;4183;2019-09-02 14:12:21.243148;HW;0986481366<br>
FASS339XM;4567;true;89590343<br>
940000301;4183;2019-09-03 09:58:17.173558;HW;0009482803<br>
...

我需要像这样将两个不同行的块合并为一个:

FASS339XM;4567;false;89590343;940000299;4183;2019-09-02 14:12:18.461819;HW;0986481366
FADS339XM;4446;true;89594343;940000300;4183;2019-09-02 14:12:21.243148;HW;0986481366
FASS339XM;4567;true;89590343;940000301;4183;2019-09-03 09:58:17.173558;HW;0009482803

我不知道该怎么做。我尝试了几种方法,但我做不到。我在 JAVA 和 Spring Batch 中开发。

有任何想法吗?

4

2 回答 2

0

只需使用快速而肮脏的 sed 命令

sed -z -e "s/<br>\n\([^F]\)/;\1/g" -e "s/<br>//g" -i <file>
于 2019-10-14T16:21:22.297 回答
0

你可以这样做:

try (PrintWriter output = new PrintWriter("path/to/output.csv");) {
    List<String> lines = Files.readAllLines(Paths.get("path/to/your.csv"));
    // assuming your csv has an even number of lines
    for (int i = 0; i < lines.size(); i++) {
        output.println(lines.get(i) + ";" + lines.get(++i));
    }
}
于 2019-10-14T16:04:24.440 回答