изменить последние две цифры числа с помощью sed

Я использую эту команду:

sed 's/;\([0-9]*\),\([0-9]*\);/;\1.\2;/g;s/;\(\r\?\)$/\1/' inputfile

для изменения огромных файлов csv в соответствии с моими потребностями (см. delete ';' в конце каждой строки ).

Бывает, что в некоторых csv-файлах есть " -)

Вот пример кода, иллюстрирующий мою проблему:

import java.util.*;

public class GenericQuestion {

    interface Function {R apply(F data);}
    static class Fruit {int id; String name; Fruit(int id, String name) {
        this.id = id; this.name = name;}
    }
    static class Apple extends Fruit { 
        Apple(int id, String type) { super(id, type); }
    }
    static class Pear extends Fruit { 
        Pear(int id, String type) { super(id, type); }
    }

    public static void main(String[] args) {

        List apples = Arrays.asList(
                new Apple(1,"Green"), new Apple(2,"Red")
        );
        List pears = Arrays.asList(
                new Pear(1,"Green"), new Pear(2,"Red")
        );

        Function fruitID = new Function() {
            public Integer apply(Fruit data) {return data.id;}
        };

        Map appleMap = mapValues(apples, fruitID);
        Map pearMap = mapValues(pears, fruitID);
    }

      public static  Map mapValues(
              List values, Function function) {

        Map map = new HashMap();
        for (V v : values) {
            map.put(function.apply(v), v);
        }
        return map;
    }
}

Как удалить общее исключение из этих вызовов:

Map appleMap = mapValues(apples, fruitID);
Map pearMap = mapValues(pears, fruitID);

Дополнительный вопрос: как удалить ошибку компиляции, если я объявляю функцию fruitId следующим образом:

Function fruitID = new Function() {public Integer apply(Fruit data) {return data.id;}};

Меня очень смущает обобщение, когда речь идет об иерархии. Мы будем очень благодарны за любой указатель на хороший ресурс об использовании и.

8
задан Guillaume 2 July 2015 в 07:51
поделиться