Чтение столбцов CSV строки 1 и сохранение их в переменных - PullRequest
0 голосов
/ 29 октября 2018

Я хотел бы прочитать данные из csv или других текстовых файлов. Данные следует читать только из строки 1 и нескольких столбцов в строке 1, сохранять их в переменные и после сохранения удалять строку. Теперь я сделал это так:

Get-ChildItem -Path C:\path | ForEach-Object -Process {
$YourContent = Get-Content -Path $_.FullName
$YourVariable = $YourContent | Select-Object -First 1
$YourContent | Select-Object -Skip 1 | Set-Content -Path $_.FullName

Моя проблема в том, что моя переменная печатается так:

Elvis;867.5390;elvis@geocities.com

Итак, я хотел бы сохранить каждую переменную в своем собственном столбце. Пример того, что может выглядеть CSV:

Elvis | 867.5309     | Elvis@Geocities.com
Sammy | 555.1234     | SamSosa@Hotmail.com

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

вот один из способов сделать то, что я думаю, что вы хотите.

  1. первые 8 строк делают файл для работы. [ ухмылка ]
  2. строка 10 читает в этом файле
  3. строки 11-13 преобразуют 1-ю строку в объект и удаляют нежелательное свойство
  4. строки 14-15 захватывают все НО 1-ую строку и отправляют ее для перезаписи исходного файла
  5. остальные строки показывают, что было сделано [ ухмылка ]

Код:

$FileName = "$env:TEMP\Pimeydentimo.txt"

# create a file to work with
@'
Alfa;123.456;Some unwanted info;Alfa@example.com
Bravo;234.567;More info that can be dropped;Bravo@example.com
Charlie;345.678;This is also ignoreable;Charlie@example.com
'@ | Set-Content -LiteralPath $FileName

$InStuff = Get-Content -LiteralPath $FileName
$TempObject = $InStuff[0] |
    ConvertFrom-Csv -Delimiter ';' -Header 'Name', 'Number', 'DropThisOne', 'Email' |
    Select-Object -Property * -ExcludeProperty DropThisOne
$InStuff[1..$InStuff.GetUpperBound(0)] |
    Set-Content -LiteralPath $FileName    

$InStuff
'=' * 30
$TempObject
'=' * 30
Get-Content -LiteralPath $FileName

вывод ...

Alfa;123.456;Some unwanted info;Alfa@example.com
Bravo;234.567;More info that can be dropped;Bravo@example.com
Charlie;345.678;This is also ignoreable;Charlie@example.com
==============================

Name Number  Email           
---- ------  -----           
Alfa 123.456 Alfa@example.com
==============================
Bravo;234.567;More info that can be dropped;Bravo@example.com
Charlie;345.678;This is also ignoreable;Charlie@example.com
0 голосов
/ 30 октября 2018

Спасибо за ответы!

Я пытаюсь объяснить немного больше, что я пытался сделать. Ответы, возможно, уже сделали, но я еще не настолько хорош в Powershell, и я еще многому учусь.

Если у меня есть csv или любой другой текстовый файл, я бы хотел прочитать первую строку файла. Строка содержит более одного фрагмента информации. Я хочу также сохранить каждый кусок информации в переменных. После сохранения информации в переменных, я хотел бы удалить строку.

Пример:

Год выпуска автомобиля

Ford Fiesta 2015

Audi A6 2018

В этом примере я хотел бы сохранить Ford, Fiesta и 2015 в переменных (строка 1) ($ Card, $ Model, $ Year) и после этого удалить строку. Вторая строка не должна быть удалена, потому что она используется позже

0 голосов
/ 29 октября 2018

Используйте Import-Csv вместо Get-Content:

Import-Csv file.csv -Delimiter ";" -Header A, B, C
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...