Лучший отвечающий
Объединение двух файлов в один при помощи PowerShell

Вопрос
-
Приветствую!
Есть два файла следующего вида:
Файл №1
property#1 property#2 ---------- ---------- value1 value1 value2 value2 value3 value3
Файл №2
property#2 property#3 ---------- ---------- value1 value1 value2 value2 value3 value3
Необходимо с помощью PowerShell получить файл CSV с сохранением зависимостей вот такого вида:
Файл №3
property#1 property#2 property#3 ---------- ---------- ---------- value1 value1 value1 value2 value2 value2 value3 value3 value3
Буду крайне благодарен за любую помощь.
3 декабря 2012 г. 12:03
Ответы
-
$file1 = gc 1.txt $file2 = gc 2.txt | Foreach {$_.split(",",2)[1]} $data = for($i=0;$i -lt $file1.count;$i++) { $file1[$i],$file2[$i] -join "," } $data
- Помечено в качестве ответа Mr.Rudgar 3 декабря 2012 г. 15:08
3 декабря 2012 г. 14:31Отвечающий
Все ответы
-
1) Свойство дублируется,какое из них имеет больший вес?
2) Странный формат для CSV(где разделитель запятая)?
3 декабря 2012 г. 12:23Отвечающий -
1) Свойство дублируется,какое из них имеет больший вес?
2) Странный формат для CSV(где разделитель запятая)?
Спасибо за ответ!
Да, свойство property#2 дублируется и содержит одинаковые значения в файле №1 и №2. Если быть точнее необходимо связать значения property#3 со значениями property#1 и получить единый файл.Прошу прощения. Вот файл, который должен получится в итоге.
"property#1","property#2","property#3" "value1","value1","value1" "value2","value2","value2" "value3","value3","value3"
3 декабря 2012 г. 12:38 -
$file1 = gc 1.txt | Where {$_ -and $_ -notmatch "-+"} | Foreach {'"'+ ($_.Trim() -replace "\s{2,}",'","') + '"'} $file2 = gc 2.txt | Foreach {$_.Trim() -replace "\s{2,}",','} | Where {$_ -and $_ -notmatch "-+"} | Foreach {$_ -replace "^.+,\b"} $prop1 = $file1[0].split(",").count $prop2 = $file2[0].split(",").count $max = ($file1.count,$file2.count | measure -Maximum).Maximum $data = for($i=0;$i -lt $max;$i++) { if($file1[$i] -and $file2[$i]) { $file1[$i] + ',"'+ $file2[$i] + '"' } elseif ($file1[$i]) { $file1[$i] + (',"'*$prop2) } else{ (','*$prop1) + '"'+ $file2[$i] + '"' } } $data | Out-File result.txt
- Изменено KazunEditor 3 декабря 2012 г. 13:41
3 декабря 2012 г. 13:19Отвечающий -
Спасибо, но это не совсем то. Попробую объяснить подробнее.
Есть два файла, в первом содержатся два параметра property#1 и property#2, во втором файле находятся property#2 и property#3. В файле №1 значения property#2 связаны со значениями property#1. В файле №2 значнеия property#2 связно со со значениями property#3. Необходимо, что бы в файле №3 значения property#3 были связаны со значениями property#1. Значение property#2 в файле №3 не обязательно.Вот более точный пример файлов.
Файл №1
"property#1","property#2" "vlad","123" "ruslan","1234" "ivan","12345"
Файл №2.
"property#2","property#3" "123","10" "1234","11" "12345","12"
Файл №3
"property#1","property#2","property#3" "ivan","12345","12" "vlad","123","10" "ruslan","1234","11"
3 декабря 2012 г. 14:20 -
$file1 = gc 1.txt $file2 = gc 2.txt | Foreach {$_.split(",",2)[1]} $data = for($i=0;$i -lt $file1.count;$i++) { $file1[$i],$file2[$i] -join "," } $data
- Помечено в качестве ответа Mr.Rudgar 3 декабря 2012 г. 15:08
3 декабря 2012 г. 14:31Отвечающий -
$file1 = gc 1.txt $file2 = gc 2.txt | Foreach {$_.split(",",2)[1]} $data = for($i=0;$i -lt $file1.count;$i++) { $file1[$i],$file2[$i] -join "," } $data
Спасибо, то что надо!
3 декабря 2012 г. 15:08