создать файл .xml с данными из bash

sudo dpkg --configure --pending должен очистить пакеты, которые не установлены полностью. После того, как они установлены или если они не сработают, попробуйте sudo apt-get purge <packages>

2
задан 5 February 2012 в 23:50

3 ответа

Создайте файл 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; stream

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

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

; объединить файл в STDOUT Скульптурный текст с grep, sed и awk (введение в три из самых полезных инструментов обработки текста в Unix)
0
ответ дан 25 May 2018 в 14:33
  • 1
    Это здорово, так как некоторые из названий городов - это два слова, и теперь результат разбивает имена. – eddie 6 February 2012 в 13:36
  • 2
    Вы всегда узнаете что-то, размещенное здесь; переменная IFS управляет тем, как bash разбивает вход петли (по-видимому). Изменили один-лайнер, чтобы отразить это - он разбивается на NEWLINE или BACKSPACE (не уверен, почему backspace, но эй ...) – Adrian 7 February 2012 в 03:35

Создайте файл 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; stream editor

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

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

0
ответ дан 15 August 2018 в 20:15

На самом деле информации недостаточно, чтобы точно знать, чего вы хотите, но я попытаюсь угадать, и это может помочь. Если у вас есть файл с именем 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

, тогда вы должны output:

<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
ответ дан 25 May 2018 в 14:33
  • 1
    Спасибо за ваш ответ, это заражает результат, который я пытаюсь получить, у меня есть файл city.txt, который имеет название города в строке, и все это статично, он остается таким же, но: CITY-FROM-TEXT- FILE-LINE-1 xx CALIFORNIA CA xx – eddie 6 February 2012 в 02:12
  • 2
    @eddie: Если вы вставляете фрагмент своего фактического city.txt, я могу попробовать и настроить вышеприведенную команду (или вы можете настроить его самостоятельно! ). Не зная, с чем вы на самом деле имеете дело, я могу только догадываться. – sladen 6 February 2012 в 03:44
  • 3
    City.txt имеют только названия городов в этом формате: city1 city2 и т. Д. – eddie 6 February 2012 в 12:52
  • 4
    @eddie: содержит ли файл city.txt каждое из имен « city1 , city2 и т. д.». все в одной строке (разделенные, например, пробелами / запятыми); или один город на линию; или один город и несколько других частей данных в строке; или что-то другое? Я счастлив помочь дальше, но было бы очень полезно, если бы вы могли вставить короткий фрагмент, чтобы выяснить, как выглядит вход. – sladen 6 February 2012 в 16:02
  • 5
    им жаль, что не понятно начинать с .. Это одно название города на строку без запятых или что-то в этом роде Спасибо – eddie 6 February 2012 в 18:04

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

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