Модераторы: ZeeLax, powerfox
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор элементов строки по regexp, bash 
:(
    Опции темы
Хоббит
Дата 21.9.2010, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



Нужно в шелле выполнить следующее.
Есть файл. В нем  xml (ну или не важно что)
Типа
<root><item name="name1">item1</item><item name="name2">item2</item></root>

Все в одну строчку. Надо вырезать name1, name2 и записать их в другой файл по одному в строку.

Был бы xml документ форматированным это было-бы легко. А как в этом случае?

PM MAIL   Вверх
ChihPih
Дата 21.9.2010, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 3.12.2006

Репутация: нет
Всего: 22



А не проще ли перл использовать?
Например так:
Код

#!/usr/bin/perl

open(FIN, '<in.txt') || die('File not found');
open(FOUT, '>out.txt') || die('File not found');

while (<FIN>){
        while (m/<item.*? name="([\w]+)".*?>/ig){
                print(FOUT "Item: $1\n");
        }
}

close(FIN);
close(FOUT);


Это сообщение отредактировал(а) ChihPih - 21.9.2010, 18:49


--------------------
www.info-x.org - информационный ресурс о ОС FreeBSD. Форум.
PM MAIL WWW Jabber   Вверх
Dieselist
Дата 11.10.2010, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 6.11.2007
Где: Киев

Репутация: нет
Всего: нет



Подобное можно сделать с помощью того же sed-а

Например, конкретно для этого примера будет так:
echo -e $(echo '<root><item name="name1">item1</item><item name="name2">item2</item></root>' | sed 's/.*name="\(.*\)".*name="\(.*\)".*/\1\\n\2/') > /path/filename
PM MAIL WWW ICQ   Вверх
nickless
Дата 12.10.2010, 18:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 18
Всего: 181



А еще можно сначала прогнать файл через xmlindent smile 


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
pythonwin

В этом форуме предпочтительны вопросы на следующие темы:

  • Конкретные вопросы о конкретном ПО. В таких вопросах желательно привести точные данные о программе: версия программы, версия ОС, версия ядра, и проблему в форме: сделал Х, хотел получить Y, а получил Z.
  • Неконкретные вопросы о выборе ПО
  • Обзоры - как дополнение в ветку Обзоры


  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программное обеспечение под *NIX системы | Следующая тема »


 




[ Время генерации скрипта: 0.0548 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.