Вы не указали свой входной документ, но я предполагаю, что это следующее, взятое из документации xmlstarlet :
123
String Value
346
Text Value
-23
stringValue
xmlstarlet изменяет файл, но результат отправляется на стандартный вывод, не сохраняется в исходном файле. Используйте другую опцию --inplace
, чтобы изменить файл на месте:
$ xml ed --inplace -u "/xml/table/rec[@id='3']/@id" -v 5 rec.xml
Затем:
$ cat rec.xml
123
String Value
346
Text Value
-23
stringValue
Кстати, этот вопрос, кажется, задает нечто очень похожее на этот вопрос .
EDIT: как было предложено @npostavs, этот параметр указан в справке:
$ xml edit --help
...
-L (or --inplace) - edit file inplace
...
Попробуйте использовать функцию groupingBy (). Например,
stream.collect(Collectors.groupingBy(Locale::getCountry));
создает карту, которая имеет страны в качестве ключей, и локали с этой страной в качестве значений