Как эффективно предварительно перенести строку в большой файл в Powershell - PullRequest
5 голосов
/ 19 марта 2009

У меня есть несколько больших файлов в формате CSV, которые я хотел бы превратить в объекты с помощью команды Import-Csv в Powershell. Однако в файлах отсутствуют заголовки столбцов, и их необходимо добавить перед использованием Import-Csv. Какой самый быстрый и эффективный способ добавить их в файл?

Ответы [ 5 ]

6 голосов
/ 19 марта 2009

Добавление к большому файлу не простая или быстрая операция.

Однако import-csv имеет аргумент «заголовок», который вы можете использовать для указания заголовков столбцов, т.е.

$header = 'Foo', 'Bar', 'Baz'
import-csv .\myfile.csv -header $header
4 голосов
/ 19 марта 2009

Я уверен, что есть способ сделать это в одной строке, но это будет работать.

Предполагается, что у вас есть Test.csv со следующим содержимым:

1,2,3
4,5,6
7,8,9

Этот код PowerShell создаст новый файл NewTest.csv с именами столбцов и добавит содержимое Test.csv.

Add-Content -path .\NewTest.csv -value "Col1,Col2,Col3"
$contents = Get-Content .\Test.csv
Add-Content -path .\NewTest.csv -value $contents

Я не могу говорить о производительности этого, если у вас действительно большой файл, но я не знаю другого способа сделать это.

3 голосов
/ 22 сентября 2016

Этот лайнер работает хорошо.

 @("Header Text") + (get-content myFile.txt) | set-content myFile.txt

Объяснение

  • @("Header Text") создает массив с одним элементом.
  • + (get-content myFile.txt) создает новый массив с содержимым обоих.
  • | set-content myFile.txt передает результат в set-content и сохраняет в файл.
0 голосов
/ 24 августа 2012
$largeFile = get-content .\largeFile.txt
$header = "Col1,Col2,Col3,Col4"
$headerArray = $header -split ' '
$headerArray + $largeFile | out-file largeFileWithHeader.txt
0 голосов
/ 19 марта 2009

Скопируйте строку, которую вы хотите добавить в новый файл, затем объедините остальные в этот новый файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...