<Ул" /> Помощь XML - В UNIX и Linux Форумы
The UNIX and Linux Forums  


Go Back   В UNIX и Linux Форумы > Топ форумы > Shell программирование и сценарии
.
Google unix.com



Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь.

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered By Powered by Google
 
LinkBack Резьба Инструменты Искать в этом Thread Оценить Thread Режимы дисплея
Old 10-07-2008
uwork72 uwork72 is offline
Зарегистрированный пользователь
  
 

Регистрация: август 2008
Сообщений: 32
Помощь XML

Группа,


Код:
$ cat 2233
12236 ID2
12239 ID3

Please guide me to construct the following XML from the above input.


<Comp>
        <main>
                <hlp fS="12236" eS="12237">
                        <std no="2233" />
                        <id="ID2"/>
                </hlp>
                <hlp fS="12239" eS="12240">
                        <std no="2233" />
                        <id="ID3"/>
                </hlp>
        </main>
</Comp>

** eS is +1 of fS value
** std no is the file name

Old 10-07-2008
эпоха era is offline Forum Advisor  
Гердер бесполезных Кошки (В субботний)
  
 

Регистрация: Mar 2008
Местоположение: / там / это / только / BIN / ш
Сообщений: 3652
Что вы пробовали, какие части вы, имеющих проблемы с? У вас есть предпочтения для конкретной реализации языка?

(Разве это не TAD идиотский иметь значение поля, которое всегда другое значение поля плюс один?)
Old 10-07-2008
summer_cherry summer_cherry is offline Forum Advisor  
Зарегистрированный пользователь
  
 

Регистрация: Июнь 2007
Месторасположение: Пекин Китай
Сообщения: 1092
Perl

привет попробовать ниже Perl Скрипт
говорят сценария зовут a.pl ниже команда может решить Вашу проблему.

Цитата:
Perl a.pl 2233


Код:
format STDOUT_TOP =
<Comp>
        <main>
.
format STDOUT =
		<hlp fs="@<<<<" es="@<<<<">
		$text1     $text2  
			<std no="@<<<"/>
			$text3
			<id="@<<"/>
			$text4
		</hlp>
.
$file=shift;
open(FH,"<$file") or die "Can not open file";
while(<FH>){
	@arr=split(" ",$_);
	$text1=$arr[0];
	$text2=$arr[0]+1;
	$text3=$file;
	$text4=$arr[1];
	write;
}
print "        </main>\n";
print "</Comp>\n";
close(FH);

Old 10-07-2008
uwork72 uwork72 is offline
Зарегистрированный пользователь
  
 

Регистрация: август 2008
Сообщений: 32
Эра, спасибо за ответы. Я старался только для одного въезда в входных файлов;-то вроде этого


Код:
....
FILE=$1
fS=$(awk '{print $1}' $FILE)
((eS=fS+1))

echo "<Comp>" >> myxml
...
...

Но я не могу сделать то же самое, если количество записей в файл ввода в более чем 1. Пожалуйста, помогите.
Old 10-09-2008
uwork72 uwork72 is offline
Зарегистрированный пользователь
  
 

Регистрация: август 2008
Сообщений: 32
cfajohnson, который работал идеально для меня. Спасибо.
Old 10-07-2008
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell программист, автор
  
 

Регистрация: Mar 2007
Место проведения: Торонто, Канада
Сообщения: 2372
Цитата:
Первоначально Послано uwork72 View Post
Группа,


Код:
$ cat 2233
12236 ID2
12239 ID3

Please guide me to construct the following XML from the above input.


<Comp>
        <main>
                <hlp fS="12236" eS="12237">
                        <std no="2233" />
                        <id="ID2"/>
                </hlp>
                <hlp fS="12239" eS="12240">
                        <std no="2233" />
                        <id="ID3"/>
                </hlp>
        </main>
</Comp>

** eS is +1 of fS value
** std no is the file name

Это не то, что вы просили:

Код:
file=2233
{
 read num1 id1
 read num2 id2
} < "$file"
fmt='<Comp>
        <main>
                <hlp fS="%d" eS="%d">
                        <std no="%d" />
                        <id="%s"/>
                </hlp>
                <hlp fS="%d" eS="%d">
                        <std no="%d" />
                        <id="%s"/>
                </hlp>
        </main>
</Comp>'

printf "%fmt\n" "$num1" "$(( $num1 + 1 ))" "$file" "$id1" \
                "$num2" "$(( $num3 + 1 ))" "$file" "$id2"

Более вероятно, что вы хотите это:


Код:
file=2233
head='<Comp>
        <main>'
fmt='                <hlp fS="%d" eS="%d">
                        <std no="%d" />
                        <id="%s"/>
                </hlp>
'

tail='        </main>
</Comp>'

{
 printf "%s\n" "$head"
 while read nnum id
 do
   printf "$fmt" "$num" "$(( $num + 1 ))" "$file" "$id"
 done < "$file"
 printf "%s\n" "$tail"
} > NEWFILE


## (untested)

Closed Thread

Закладки

Теги
Perl, Perl сдвиг, перемещение, переход на Perl

Резьба Инструменты Искать в этом Thread
Искать в этом Thread:

Расширенный поиск
Режимы дисплея Оценить эту ветку
Оценить эту ветку:

Отправка Правила
Вы не может Начать новую нитей
Вы не может Почтовые ответы
Вы не может Почтовые вложения
Вы не может Редактировать Ваши сообщения

BB код быть На
Смайлики являемся На
[IMG] код На
HTML-код Вне
Trackbacks являемся На
Pingbacks являемся На
Refbacks являемся На




Часовой пояс GMT -4. Текущее время 03:07 PM.


Powered By: Справка, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Язык Переводы на питание от .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
В UNIX и Linux форумы Содержание Copyright © 1993-2009. Все права Reserved.Ad управления по RedTyger

Содержание соответствующие URL-адреса в vBSEO 3.2.0