Скрипт PowerShell для преобразования файла CSV с одним столбцом - PullRequest
3 голосов
/ 31 марта 2011

Я ищу скрипт, который не обязательно должен быть в PS, но должен работать под Windows, который преобразует текстовый файл в один столбец, как показано ниже

abc
def
ghi

в

'abc',
'def',
'ghi'

В настоящее время я делаю это изменение в Excel, используя = concatenate, но сценарий будет лучше.

Ответы [ 3 ]

5 голосов
/ 31 марта 2011

Использование может использовать регулярное выражение для вставки символов в начале и конце.

get-content ./myonlinecolumn.txt | foreach {$_ -replace "^","'" -replace "`$","',"} 

Или вы можете использовать оператор форматирования -f:

get-content ./myonlinecolumn.txt  | foreach {"'{0}'," -f $_ }

Это немного больше работыудалить последнюю запятую, но это также возможно

$a = get-content ./myonlinecolumn.txt
get-content ./myonlinecolumn.txt | foreach { if ($_.readcount -lt $a.count) {"'{0}'," -f $_ } else {"'{0}'" -f $_ }}
3 голосов
/ 31 марта 2011

Моя первая идея была похожа на то, что Чед уже написал, это проверка номера строки. Поэтому я попробовал другое решение. Не очень приятно, но я тоже выкладываю:)

((gc c:\before.txt | % {"'"+$_+"'"} ) -join ",*").split("*") | out-file c:\after.txt
0 голосов
/ 31 марта 2011

Вы можете просто использовать

(gc myfile | %{"'$_'"}) -join ',
'

или, если вы любите побег:

(gc myfile | %{"'$_'"}) -join ",`n"

Это загружает файл в массив строк (Get-Content), затем обрабатывает каждую строку, заключая ее в одинарные кавычки. (Используйте `" '$ ($ _. Trim ())' ", если вам тоже нужно обрезать пробелы). Затем строки соединяются запятой и переводом строки (они могут быть встроены непосредственно в строки).

Если ваши значения могут содержать одинарные кавычки (которые должны быть экранированы), тоже просто вставить их туда:

(gc myfile | %{"'$($_.Trim() -replace "'","''")'"}) -join ",`n"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...