Командная строка для изменения узлов в файле XML может быть, как вы говорите, xmlstarlet.
Вы также можете написать программу XSL следующим образом:
book.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="utf-8"/>
<xsl:template match="title"><!-- the node you want to modify -->
<title>
<xsl:text>[</xsl:text>
<xsl:value-of select="../publisher/text()"/>
<xsl:text> </xsl:text>
<xsl:value-of select="../isbn/text()"/>
<xsl:text>] </xsl:text>
<xsl:value-of select="../title/text()"/>
</title>
</xsl:template>
<xsl:template match="@*|node()"><!-- identity transformation for remaining nodes -->
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Предполагая, что ваш исходный файл называется book.xml
вышеуказанная программа XSL может быть запущена из командной строки:
xsltproc book.xsl book.xml