Локальное редактирование выгрузок

Возможно ли как-то локально отредактировать выгрузку (с geofabrik.de, например), перед конвертацией в формат навигатора, не поднимая у себя PostgreSQL? Загрузить всю выгрузку в редактор, естественно, невозможно. Можно сделать из неё небольшую выборку или вырезку при помощи osmosis, однако смержить результат редактирования с исходной выгрузкой при помощи osmosis невозможно из-за отсутствия у новых объектов информации о версии (id, таймстамп и номер версии проставляется уже в postgres, насколько я понимаю).

Прямое редактирование выгрузки скриптом?

Новые объекты должны иметь отрицательный id, правельный id присвоит база при заливке

Не всегда удобно

Да, но osmosis ругается не на id, а на отсутствие полей version и timestamp.

Дак человеку не надо в базу заливать, ему скорее надо чтобы конвертер в мп и дальше по цепочке переварили отрицательные айдишники. Но это то самое простое, а вот как обработать удаление/перемещение существующих, не поднимая бд в этом как раз у asphyx вопрос.

Скорее, в том, как локально отредактировать выгрузку, которую в редактор целиком загрузить нельзя. Я попробовал вариант с редактированием только нужного совсем маленького фрагмента в отдельном файле, но столкнулся с проблемой при попытке объединить этот маленький файлик с большим. Конвертеру-то должно быть пофиг, а вот osmosis при слиянии не переваривает новые объекты, ни разу не побывавшие в базе.

asphyx, что мешает для слияния проставить новым объектам фейковые id, timestamp, version, если уж в базу заливаться не будет?

Ничего, просто, я думал, есть какой-то готовый механизм. Ну, как минимум, не хочется парсить xml регулярными выражениями. Есть какой-нибудь инструмент, позволяющий обрабатывать xml в виде цепочек паттернов и обработчиков, типа того, как это делает awk для простого текста?

Разбираться с XSLT не хотелось, сделал следующим образом (доку по XPath глянуть всё же пришлось):

xmlstarlet ed -a '/osm/node[not (@version)] | /osm/way[not (@version)]' -t attr -n version -v 1 input.osm | xmlstarlet ed -a '/osm/node[not (@timestamp)] | /osm/way[not (@timestamp)]' -t attr -n timestamp -v '2011-08-04T10:31:30Z' > output.osm