Как добавить кавычки и запятые в powershell - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть CSV-файл, в котором мне нужен только 1 столбец с именем «SerialNumber». Мне нужно объединить текстовые строки, удалить пробел, добавить каждую строку в кавычки и разделить запятой.

Пока у меня работает несколько миль кода, но он добавляет кавычки в конце и не добавляет кавычки в начале.

$SerialList = import-csv .\log.csv | select -ExpandProperty Serialnumber | Out-File -FilePath .\Process.txt
(gc process.txt) | ? {$_.trim() -ne "" } | set-content process.txt
gc .\process.txt | %{$_ -replace '$','","'} | out-file process1.csv
Get-Content .\process1.csv| foreach {
$out = $out + $_
}
$out| Out-File .\file2.txt

Вывод:

SerialNumber

1234

1234

4567

4567

Ожидаемый результат:

"1234", "1234", "4567", "4567"

1 Ответ

0 голосов
/ 13 февраля 2019

Попробуйте следующее (PSv3 +):

(Import-Csv .\log.csv).SerialNumber -replace '^.*$', '"$&"' -join "," > .\file2.txt
  • (Import-Csv .\log.csv).SerialNumber импортирует файл CSV, а .SerialNumber использует перечисление члена для извлечения SerialNumber значения столбца в виде массива.

  • -replace '^.*$', '"$&"' заключает каждый элемент массива в "...".

    • Regex ^.*$соответствует каждому элементу массива полностью.
    • Выражение замены "$&" заменяет элемент тем, что было сопоставлено ($&), заключенным в " символов.- для справки см. этот ответ
  • -join "," объединяет результирующие элементы массива с , в качестве разделителя.

...