2016-02-29 4 views
0

Я хочу добавить «после третьей запятой и» перед пятой запятой. Как это можно сделать в powershell?Powershell использовать regx, чтобы найти положение символа

Моя идея заключается в том, чтобы использовать регулярное выражение функции, чтобы найти местоположение третьей и пятой запятой затем добавить "к ним

$s.Insert(4,'-') **In case reg return position 4 

, например, данные

04642583,3,HC Mobile,O213,Inc,SIS Services,KR,Non Payroll Relevant,KR50 

Выходных

04642583,3,HC Mobile,"O213,Inc",SIS Services,KR,Non Payroll Relevant,KR50 

Это код, который я пробовал, но ему не удалось «Пустое соединение с трубкой не разрешено». Как исправить это.

$source = "D:\Output\MoreComma.csv" 
$FinalFile = "D:\Output\MoreComma_Corrected.csv" 

$content = Get-Content $source 
foreach ($line in $content) 
{ 
$items = $line.split(','); 
$items[3] = '"'+$items[3] 
$items[4] = $items[4]+'"'; 
$items -join ',' 
} | Set-Content $FinalFile 

ответ

1

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

Пример:

$data = "04642583,3,HC Mobile,O213,Inc,SIS Services,KR,Non Payroll Relevant,KR50"; 

$items = $data.split(','); 
$items[3] = '"'+$items[3] 
$items[4] = $items[4]+'"'; 
$items -join ',' 

Это произведет строку:

04642583,3,HC Mobile,"O213,Inc",SIS Services,KR,Non Payroll Relevant,KR50 

Учитывая вы сохранили это в CSV- файле:

$file = "C:\tmp\test.csv"; 
$lines = (get-content $file); 
$newLines=($lines|foreach-object {  
$items = $_.split(','); 
$items[3] = '"'+$items[3] 
$items[4] = $items[4]+'"'; 
$items -join ',' 
}) 

Вы можете затем вывести на в результате получится новый файл, если вы хотите

$newLines|Set-content C:\tmp\test2.csv 

Это будет «испортить» ваш файл в формате CSV, хотя (как предполагается, «объединить столбцы»), но я предполагаю, что это то, чего вы пытаетесь достичь?

+0

Я попытался применить ваш код к моему, но это не удалось. Вы знаете, как я могу прочитать его как файл, а затем обработать его и вывести результат как файл? – user664481

+0

Обновлен с примера, теперь читаем из CSV и разделяем и устанавливаем результат обратно в другой файл. – CmdrTchort

+0

Отлично !! Спасибо ......... – user664481

Смежные вопросы