Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Выделить из строки текста слово определенной длины и записать в переменную

Ответить
Настройки темы
PowerShell - [решено] Выделить из строки текста слово определенной длины и записать в переменную

Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить PM | Цитировать


здравствуйте!

есть задача загрузить через powershell файл и преобразовать его в csv вида:

N;C1;C7;C30;C90;C180;C360
1; 7.28; 7.54; 8.05; 8.58; 8.93; 9.19
2….

сам файл имеет примерно такую структуру:

<Record Code="1" Date="07/07/2014"><C1>7.28</C1><C7>7.54</C7><C30>8.05</C30><C90>8.58</C90><C180>8.93</C180><C360>9.19</C360></Record>
<Record Code="2" Date="07/07/2014"><C1>7.89</C1><C7>8.22</C7><C30>9.00</C30><C90>9.41</C90><C180>9.81</C180><C360>10.19</C360>></Record>

возник вопрос: как из строки выделить номер кода (code="1"), значения между <C1>...</C1> и вывести их в csv с заданным видом

Отправлено: 14:20, 15-07-2014

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Приведите полный формат файла, возможно это xml.

Код: Выделить весь код
[xml]$xml = @"
<?xml version="1.0"?>
<Records>
<Record Code="1" Date="07/07/2014"><C1>7.28</C1><C7>7.54</C7><C30>8.05</C30><C90>8.58</C90><C180>8.93</C180><C360>9.19</C360></Record>
<Record Code="2" Date="07/07/2014"><C1>7.89</C1><C7>8.22</C7><C30>9.00</C30><C90>9.41</C90><C180>9.81</C180><C360>10.19</C360>></Record>
</Records>
"@

PS > $xml.Records.Record


Code : 1
Date : 07/07/2014
C1   : 7.28
C7   : 7.54
C30  : 8.05
C90  : 8.58
C180 : 8.93
C360 : 9.19

Code  : 2
Date  : 07/07/2014
C1    : 7.89
C7    : 8.22
C30   : 9.00
C90   : 9.41
C180  : 9.81
C360  : 10.19
#text : >

PS >  $xml.Records.Record | convertto-csv -Delimiter ";" -NoTypeInformation
"Code";"Date";"C1";"C7";"C30";"C90";"C180";"C360"
"1";"07/07/2014";"7.28";"7.54";"8.05";"8.58";"8.93";"9.19"
"2";"07/07/2014";"7.89";"8.22";"9.00";"9.41";"9.81";"10.19"

Отправлено: 14:37, 15-07-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить PM | Цитировать


так и есть, это xml-файл

Код: Выделить весь код
<?xml version="1.0" encoding="windows-1251" ?>                                                                          
----------------------------------------------                                                                          
<MKR FromDate="20140707" ToDate="20140707" name="Interbank Credit Market">                                              
<Record Date="07/07/2014" Code="1" >                                                                                    
<C1>7.28</C1>                                                                                                           
<C7>7.54</C7>                                                                                                           
<C30>8.05</C30>                                                                                                         
<C90>8.58</C90>                                                                                                         
<C180>8.93</C180>                                                                                                       
<C360>9.19</C360>                                                                                                       
</Record>                                                                                                               
<Record Date="07/07/2014" Code="2" >                                                                                    
<C1>7.89</C1>                                                                                                           
<C7>8.22</C7>                                                                                                           
<C30>9.00</C30>                                                                                                         
<C90>9.41</C90>                                                                                                         
<C180>9.81</C180>                                                                                                       
<C360>10.19</C360>                                                                                                      
</Record>                                                                                                               
<Record Date="07/07/2014" Code="3" >                                                                                    
<C1>7.75</C1>                                                                                                           
<C7>10.07</C7>                                                                                                          
<C30>8.25</C30>                                                                                                         
<C90>10.58</C90>                                                                                                        
<C180>9.82</C180>                                                                                                       
<C360>10.15</C360>                                                                                                      
</Record>                                                                                                               
<Record Date="07/07/2014" Code="4" >                                                                                    
<C1>7.68</C1>                                                                                                           
<C7>-</C7>                                                                                                              
<C30>-</C30>                                                                                                            
<C90>-</C90>                                                                                                            
<C180>-</C180>                                                                                                          
<C360>-</C360>                                                                                                          
</Record>                                                                                                               
<Record Date="07/07/2014" Code="5" >                                                                                    
<C1>180659.39</C1>                                                                                                      
<C7>317.60</C7>                                                                                                         
<C30>5.20</C30>                                                                                                         
<C90>300.00</C90>                                                                                                       
<C180>2160.00</C180>                                                                                                    
<C360>480.00</C360>                                                                                                     
</Record>                                                                                                               
<Record Date="07/07/2014" Code="6" >                                                                                    
<C1>48704.00</C1>                                                                                                       
<C7>-</C7>                                                                                                              
<C30>-</C30>                                                                                                            
<C90>-</C90>                                                                                                            
<C180>-</C180>                                                                                                          
<C360>-</C360>                                                                                                          
</Record>                                                                                                               
<Record Date="07/07/2014" Code="7" >                                                                                    
<C1>7.81</C1>                                                                                                           
<C7>12.00</C7>                                                                                                          
<C30>-</C30>                                                                                                            
<C90>-</C90>                                                                                                            
<C180>-</C180>                                                                                                          
<C360>-</C360>                                                                                                          
</Record>                                                                                                               
<Record Date="07/07/2014" Code="8" >                                                                                    
<C1>15228.80</C1>                                                                                                       
<C7>160.00</C7>                                                                                                         
<C30>-</C30>                                                                                                            
<C90>-</C90>                                                                                                            
<C180>-</C180>                                                                                                          
<C360>-</C360>                                                                                                          
</Record>                                                                                                               
                                                                                                                        
</MKR>

Отправлено: 14:44, 15-07-2014 | #3


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
[xml](Get-Content file.xml) | Foreach {$_.MKR.Record} | Export-Csv -NoTypeInformation -Delimiter ";" result.csv
Только убрать из xml - ----------------------------------------------

Отправлено: 14:47, 15-07-2014 | #4


Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить PM | Цитировать


спасибо за помощь!

Отправлено: 14:47, 15-07-2014 | #5


Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить PM | Цитировать


есть небольшая проблемка

при сохранении в формате csv итог получается такой:

Date Code C1 C7 C30 C90 C180 C360
07.07.2014 1 июл.28 июл.54 08.май авг.58 авг.93 сен.19
07.07.2014 2 июл.89 авг.22 9.00 сен.41 сен.81 окт.19
07.07.2014 3 июл.75 10.июл авг.25 окт.58 сен.82 окт.15
07.07.2014 4 июл.68 - - - - -
07.07.2014 5 180659.39 317.60 май.20 300.00 2160.00 480.00
07.07.2014 6 48704.00 - - - - -
07.07.2014 7 июл.81 12.00 - - - -
07.07.2014 8 15228.80 160.00 - - - -

вместо значений c1 ... c360 в некоторых местах стоит дата, а остальные значения не совпадают

здесь уже нужно бороться с форматом ячеек в excel?

Последний раз редактировалось Grafitchic, 15-07-2014 в 15:05. Причина: дополнение


Отправлено: 15:02, 15-07-2014 | #6


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


1) Открываем excel
2) Открыть файл - выбираем csv
3) Запустится мастер текстов
  • Шаг 1 - Далее
  • Шаг 2 - выбираем символ - разделителя точка с запятой
  • Шаг 3 - Выбираем столбец и выставляем тип текстовый, и так для всех столбцов.

Отправлено: 15:18, 15-07-2014 | #7


Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить PM | Цитировать


при выборе csv, excel сразу открывает его и не вызывает мастер текстов

Отправлено: 15:30, 15-07-2014 | #8


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


http://it.kgsu.ru/MSExcel/excel161.html

Отправлено: 15:38, 15-07-2014 | #9


Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить PM | Цитировать


всё в порядке, разобрался. kazun, благодарю за помощь.

Отправлено: 15:38, 15-07-2014 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Выделить из строки текста слово определенной длины и записать в переменную

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Последнее слово из строки в файле в переменную NoIZz Скриптовые языки администрирования Windows 2 23-10-2013 14:11
Офис и Текст - [решено] Как выделить строки с определенны символами KooDI Программное обеспечение Windows 2 03-03-2013 14:27
CMD/BAT - найти файл и записать в переменную pzh2393 Скриптовые языки администрирования Windows 7 20-01-2013 03:35
CMD/BAT - [решено] Выделить из текстового файла строки, содеражщие дату формата DD.MM.YYYY за указанный jrd Скриптовые языки администрирования Windows 2 17-02-2012 16:57
CMD/BAT - [решено] Чтение строки из файла в переменную Николя Скриптовые языки администрирования Windows 42 17-01-2010 19:42




 
Переход