без сомнения! это почти мазохистское, чтобы не иметь отдельный раздел или диск для домов - на реальном сервере, по крайней мере... как еще можно установить с nosuid,nodev,usrquota,grpquota? С 93 я только опытными одна проблема с этим: изменение форм собственности спину, чтобы соответствовать новой жидкости - просто исправить. Я не знаю. Я не знаю, что распространенность языка Perl будет в 2 или 3 года, или если версия Perl будет придумать простое, но важное изменение синтаксиса для простых команд или.... в принципе я не знаю, что принесет будущее, поэтому я стараюсь избегать зависимостей. Я хорошо помню ", но 98% людей используют Интернет Эксплорер, почему вы заботитесь о деталях, которые влияют на других браузерах?" эру, когда я был на создание продуктов, которые предназначались для работы на пару лет позже.

Пожалуйста, не надо. В XML не очень хорошо работает с регулярными выражениями и строку разбора, потому что есть куча вещей, которые можно сделать в XML, которые являются семантически идентичными, но с разными 'совпадения'.

С xmlstarlet вы можете извлекать в XPath выражение, которое подарит вам вашу ценность.

Или мое любимое-это с помощью Perl и XML-кода::прутик , чтобы разобрать ваш XML, и снова - получить значение, которое вы хотите таким образом.

#!/usr/Бен/ОКР на Perl

использовать строгие;
использование предупреждений;

использовать XML::прутик;

мой $веточку = модуль XML::веточка -> новый ( 'pretty_print' => 'indented_a' ) -> разбор ( \*сведения );
печать "PGMNR: ", $веточку -> get_xpath('//система',0) -> АТТ('PGMNR'),"\п";

____Данных
<?формат XML версия="1.0" кодирование="UTF-8"?>
<NT3Config>
<Dev система="7" PGMNR="24" VCONF="800 800" /> 
<Имя="сое Т#1" Информация="23 1 1 1 61 17 00" />
<Имя="MatadorM" информация="23 2 2 1 61 17 00" />
<Данные Ппогр="0" установка="0 0 0 0 0 0 0" Калиб="0 0 0 0 0 0" />
<Данные Ппогр="1" параметр="0 0 0 0 0 0 0" Калиб="0 0 0 0 0 0" />
<Данные Ппогр="2" параметр="0 0 0 0 0 0 0" Калиб="0 0 0 0 0 0" />
<СТАНДАРТЫ GSM ТЛФ="" ЗАКРЕПИТЬ="" ПОРТ="0" />
</NT3Config>

Это может 'один лайнер, если это необходимо, или вы можете xmlstarlet , что в XPath.

Перл -0777 -кода MXML::прутик -е 'печать на XML::веточка -> разбор ( <> )-> get_xpath ('/система',0) -> АТТ('PGMNR');'

Примечание - причина, почему я категорически против регулярного выражения на основе анализа, потому что эти все допустимые способы представления вашего XML:

<?формат XML версия="1.0" кодирование="UTF-8"?>
<NT3Config>
<Система
Дэв="7"
PGMNR="24"
 VCONF="800 800"
/>
<ХОЧУ
 информация="23 1 1 1 61 17 00"
 имя="сое Т#1"
/>
<ХОЧУ
 информация="23 2 2 1 61 17 00"
имя="MatadorM"
/>
<Данные
Ппогр="0"
 Калиб="0 0 0 0 0 0"
 Установка="0 0 0 0 0 0 0"
/>
<Данные
Ппогр="1"
 Калиб="0 0 0 0 0 0"
 Установка="0 0 0 0 0 0 0"
/>
<Данные
Ппогр="2"
 Калиб="0 0 0 0 0 0"
 Установка="0 0 0 0 0 0 0"
/>
<Стандарты GSM
ПИН=""
Порт="0"
ТЛФ=""
/>
</NT3Config>

И это:

<?формат XML версия="1.0" кодирование="UTF-8"?>
<NT3Config
><Система
Дэв="7"
PGMNR="24"
VCONF="800 800"
/><ХОЧЕШЬ
информация="23 1 1 1 61 17 00"
имя="сое Т#1"
/><ХОЧЕШЬ
информация="23 2 2 1 61 17 00"
имя="MatadorM"
/><Масштаб
Ппогр="0"
Калиб="0 0 0 0 0 0"
Установка="0 0 0 0 0 0 0"
/><Масштаб
Ппогр="1"
Калиб="0 0 0 0 0 0"
Установка="0 0 0 0 0 0 0"
/><Масштаб
Ппогр="2"
Калиб="0 0 0 0 0 0"
Установка="0 0 0 0 0 0 0"
/><Сети GSM
ПИН=""
Порт="0"
ТЛФ=""
/></NT3Config>

И это:

<?формат XML версия="1.0" кодирование="UTF-8"?>
<NT3Config><система разработки="7" PGMNR="24" VCONF="800 800"/><хочу инфо="23 1 1 1 61 17 00" имя="сое Т#1"/><Хочу инфо="23 2 2 1 61 17 00" имя="MatadorM"/><шкала Ппогр="0" Калиб="0 0 0 0 0 0" установка="0 0 0 0 0 0 0"/><Шкала Ппогр="1" Калиб="0 0 0 0 0 0" установка="0 0 0 0 0 0 0"/><шкала Ппогр="2" Калиб="0 0 0 0 0 0" установка="0 0 0 0 0 0 0"/><GSM и пин="" порт="0" ТЛФ=""/></NT3Config>

И это:

<?формат XML версия="1.0" кодирование="UTF-8"?>
<NT3Config>
 <Dev система="7" PGMNR="24" VCONF="800 800"/>
 <Хотите информация="23 1 1 1 61 17 00" имя="сое Т#1"/>
 <Хотите информация="23 2 2 1 61 17 00" имя="MatadorM"/>
 <Данные Ппогр="0" Калиб="0 0 0 0 0 0" установка="0 0 0 0 0 0 0"/>
 <Данные Ппогр="1" Калиб="0 0 0 0 0 0" установка="0 0 0 0 0 0 0"/>
 <Данные Ппогр="2" Калиб="0 0 0 0 0 0" установка="0 0 0 0 0 0 0"/>
 <СТАНДАРТЫ GSM PIN-КОД="" ПОРТ="0" ТЛФ=""/>
</NT3Config>

И вы могли бы даже столкнуться с некоторыми из ваших одинарные теги, как указано выше явно закрыта:

<Dev система="7" PGMNR="24" VCONF="800 800"/> 

И:

<Dev система="7" PGMNR="24" VCONF="800 800"></системы>

Оба говорят одно и то же, что касается XML-это.

Чисто из-за дополнительных ограничений заблокированной системы вниз, вот действительно грязный способ сделать это - но учтите, на выше - мы не разбора XML больше, мы делаем обычный текст, и он может очень легко сломаться. (Хрупкий код делает ваши сисадмины сад).

#!/usr/Бен/ОКР на Perl

использовать строгие;
использование предупреждений;

местные $/;
мой ( $PGMNR ) = <данные> =~ м/PGMNR=\"(\д+)\"/; 
печать $PGMNR;

____Данных
<?формат XML версия="1.0" кодирование="UTF-8"?>
<NT3Config>
<Dev система="7" PGMNR="24" VCONF="800 800" /> 
<Имя="сое Т#1" Информация="23 1 1 1 61 17 00" />
<Имя="MatadorM" информация="23 2 2 1 61 17 00" />
<Данные Ппогр="0" установка="0 0 0 0 0 0 0" Калиб="0 0 0 0 0 0" />
<Данные Ппогр="1" параметр="0 0 0 0 0 0 0" Калиб="0 0 0 0 0 0" />
<Данные Ппогр="2" параметр="0 0 0 0 0 0 0" Калиб="0 0 0 0 0 0" />
<СТАНДАРТЫ GSM ТЛФ="" ЗАКРЕПИТЬ="" ПОРТ="0" />
</NT3Config>

Или onelinering в Perl:

-0777 на Perl-е 'печать <> =~ м/PGMNR=\"(\д+)\"/;'