создать XML-файл с данными из Bash

Я пытаюсь создать файл .xml, команда bash должна скопировать этот блок кода и заменить атрибут CITY-FROM-TEXT-FILE-LINE-1 из city.txt (один город на строку) [ 111]

<ss:Row ss:Height ="22">
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">CITY-FROM-TEXT-FILE-LINE-1</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">CALIFORNIA</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">CA</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
        </ss:Row>
2
задан 5 February 2012 в 21:50

2 ответа

Создайте файл template.xml, содержащий текст выше

IFS=$(echo -en "\n\b") ; for C in `cat city.txt` ; do sed s/CITY-FROM-TEXT-FILE-LINE-1/$C/ template.xml ; done > cities.xml

Используемые команды

  • cat; объединить файл в STDOUT
  • sed; потоковый редактор

Мы также используем стандартный механизм bash для цикла и перенаправление в файл.

Для дальнейшего чтения я рекомендую:

0
ответ дан 5 February 2012 в 21:50

Нет действительно достаточной информации для знания точно, чего Вы требуете, но я попытаюсь взять предположение, и она может помочь. Если Вам назвали файл cities.txt который содержавший:

xx
CITY-FROM-TEXT-FILE-LINE-1
CALIFORNIA
CA
xx

и затем Вы работали awk команда на том входе:

awk 'BEGIN{print "<ss:Row ss:Height =\"22\">"}{printf "  <ss:Cell>\n    <ss:Data ss:Type=\"String\">%s</ss:Data>\n  </ss:Cell>\n",$0}END{print "</ss:Row>"}' < cities.txt

затем Вы были бы, должен вывод:

<ss:Row ss:Height ="22">
  <ss:Cell>
    <ss:Data ss:Type="String">xx</ss:Data>
  </ss:Cell>
  <ss:Cell>
    <ss:Data ss:Type="String">CITY-FROM-TEXT-FILE-LINE-1</ss:Data>
  </ss:Cell>
  <ss:Cell>
    <ss:Data ss:Type="String">CALIFORNIA</ss:Data>
  </ss:Cell>
  <ss:Cell>
    <ss:Data ss:Type="String">CA</ss:Data>
  </ss:Cell>
  <ss:Cell>
    <ss:Data ss:Type="String">xx</ss:Data>
  </ss:Cell>
</ss:Row>

Это не может ответить на Ваш запрос непосредственно, но надо надеяться должно заставить Вас один возможный путь (многих) получать свой запущенный.

0
ответ дан 5 February 2012 в 21:50

Другие вопросы по тегам:

Похожие вопросы: