Подобно @Smar, но использует пути файловой системы, заданные в PRIMARY и SECONDARY:
PRIMARY=~/Code/project1
SECONDARY=~/Code/project2
cd $PRIMARY
git remote add test $SECONDARY && git fetch test
git merge test/master
Затем вы вручную объединяетесь.
(адаптировано из сообщения Anar Манафы )
Если Вы просто хотите атрибуты имени какого-либо элемента, вот быстрое, но неполное решение.
(Ваш текст в качестве примера находится в примере файла),
пример "имени" grep | сократил-d" \""-f2,2 | xargs-I {} эхо "{}",
XMLStarlet является инструментарием командной строки для запрошенного/редактирования/проверения/преобразовывания XML-документов (для получения дополнительной информации см. http://xmlstar.sourceforge.net/),
Никакие файлы для записи просто передайте файл по каналу к xmlstarlet и примените фильтр xpath.
cat file.xml | xml sel -t -m 'xpathExpression' -v 'elemName' 'literal' -v 'elname' -n
- m выражение-v оценивают '' включенный литерал-n новая строка
Таким образом для Вашего xpath выражение XPath было бы//myel / имя, которое обеспечит эти два значения атрибута.
Очень удобный инструмент.
Ответ Peter корректен, но он производит запаздывающий перевод строки.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
<xsl:template match="root">
<xsl:for-each select="myel">
<xsl:value-of select="@name"/>
<xsl:text>,</xsl:text>
<xsl:if test="not(position() = last())">
<xsl:text>
</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Просто выполненный, например.
xsltproc stylesheet.xsl source.xml
генерировать CSV заканчивается в стандартный вывод.
Используйте процессор XSLT командной строки, такой как xsltproc, сакс или xalan, чтобы проанализировать XML и генерировать CSV. Вот пример, который для Вашего случая является таблицей стилей:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="root">
<xsl:apply-templates select="myel"/>
</xsl:template>
<xsl:template match="myel">
<xsl:for-each select="@*">
<xsl:value-of select="."/>
<xsl:value-of select="','"/>
</xsl:for-each>
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>
Ваш тестовый файл находится в test.xml.
sed -n 's/^\s`*`<myel\s`*`name="\([^"]`*`\)".`*`$/\1,/p' test.xml
Это имеет, это - ловушки, например, если этому строго не дают, тот каждый myel находится на одной строке, необходимо "нормализовать" XML-файл сначала (таким образом, каждый myel находится на одной отдельной строке),
Вот немного рубинового сценария, который делает точно, что Ваш вопрос спрашивает (вытяните атрибут, названный 'именем' из элементов, названных 'myel'). Должно быть легко сделать вывод
#!/usr/bin/ruby -w
require 'rexml/document'
xml = REXML::Document.new(File.open(ARGV[0].to_s))
xml.elements.each("//myel") { |el| puts "#{el.attributes['name']}," if el.attributes['name'] }