none
Объединение двух файлов в один при помощи PowerShell RRS feed

  • Вопрос

  • Приветствую!

    Есть два файла следующего вида:

    Файл №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

Ответы

Все ответы

  • 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