none
Замена пробела на "," с помощью PowerSHell RRS feed

  • Вопрос

  • Добрый день!

    Имеется txt файл. из него хотелось бы получить файлы по определенному шаблону(т.е. разбить на столбцы определенного размера). Содержимое файла такое : AAA BBBBBBBBBBBBB CCCCCCCCCCCCCCCCCCCC DD        -453700.00 020310 020315    ПППП EEE FFFFFF    02     21.5000000 7I. Т.е. в файле есть множество пробелов(их может быть подряд несколько идти), которые желательно бы удалить или же поменять на другой разделяющий знак.

    Про бывал так - (Get-Content c:\test.txt) | foreach-object{ $_ -replae " ", ","} | set-content c:\test1.txt - в нем меняются все пробелы. 

    Подскажите пожалуйста в каком направлении искать решение или может кто сталкивался с такой задачей?

     

    12 августа 2011 г. 5:41

Ответы

  • AAA,BBBBBBBBBBBBB,CCCCCCCCCCCCCCCCCCCC,DD,-453700.00,020310,020315,ПППП,EEE,FFFFFF,02,21.5000000,7I. Иванов Иван Иванович

    Если формат строк не изменен и следует заданному порядку,то можно так:

     

    $str = "AAA BBBBBBBBBBBBB CCCCCCCCCCCCCCCCCCCC DD  -453700.00 020310 020315 ПППП EEE FFFFFF 02  21.5000000 7I.Иванов Иван Иваныч"
    
    $str -replace " {2,}" -split " ",9 -join ","

     


    В случае foreach все тоже самое.

     

    gc test.txt | %{$_ -replace " {2,}" -split " ",9 -join ","}

     


    12 августа 2011 г. 7:05
    Отвечающий
  • Спасибо за помощь! 

    но начинают вылазить траблы.

    если  $str = "AAA BBBBBBBBBBBBB CCCCCCCCCCCCCCCCCCCC DD -453700.00 020310 020315 ПППП EEE FFFFFF 02 21.5000000 7I.Иванов Иван Иваныч"

    $str -replace " {2,}" -split " ",9 -join "," 
    у меня на выходе получилось : AAA,BBBBBBBBBBBBB,CCCCCCCCCCCCCCCCCCCC,DD-453700.00,020310,020315ПППП,EEE,FFFFFF0221.5000000 7I.Иванов Иван Иваныч
    т.е. часть текста просто примкнули друг к дружке. 

     

    $str -replace " {2,}"," " -split " ",13 -join ","
    

     

    или так

     

    $str.split(" ",13,"RemoveEmptyEntries") -join ","
    

     


    • Предложено в качестве ответа Dmitry DavydovModerator 16 августа 2011 г. 14:21
    • Помечено в качестве ответа KazunEditor 18 августа 2011 г. 6:25
    12 августа 2011 г. 7:19
    Отвечающий
  • Надо сохранять файл в формате UNICODE.
    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    • Предложено в качестве ответа Dmitry DavydovModerator 16 августа 2011 г. 14:22
    • Помечено в качестве ответа KazunEditor 18 августа 2011 г. 6:25
    15 августа 2011 г. 2:54
    Модератор

Все ответы

  • Если заменить только два и более пробела на ",",то можно так:

    (gc tests.txt) -replace " {2,}",","


    12 августа 2011 г. 5:54
    Отвечающий
  •  а можно ли файл с помощью шаблона отформатировать? 

    шаблон такой:

     Поле1 (1/3)

    Поле2 (5/13)

    Поле3(19/20)

    и т.д.?

    12 августа 2011 г. 6:27
  •  а можно ли файл с помощью шаблона отформатировать? 

    шаблон такой:

     

     Поле1 (1/3)

    Поле2 (5/13)

    Поле3(19/20)

    и т.д.?

     

    Покажите на строке - AAA BBBBBBBBBBBBB CCCCCCCCCCCCCCCCCCCC DD        -453700.00 020310 020315    ПППП EEE FFFFFF    02     21.5000000 7I ,что нужно в конечном итоге.
    12 августа 2011 г. 6:48
    Отвечающий
  • AAA,BBBBBBBBBBBBB,CCCCCCCCCCCCCCCCCCCC,DD,-453700.00,020310,020315,ПППП,EEE,FFFFFF,02,21.5000000,7I. Иванов Иван Иванович
    12 августа 2011 г. 6:58
  • AAA,BBBBBBBBBBBBB,CCCCCCCCCCCCCCCCCCCC,DD,-453700.00,020310,020315,ПППП,EEE,FFFFFF,02,21.5000000,7I. Иванов Иван Иванович

    Если формат строк не изменен и следует заданному порядку,то можно так:

     

    $str = "AAA BBBBBBBBBBBBB CCCCCCCCCCCCCCCCCCCC DD  -453700.00 020310 020315 ПППП EEE FFFFFF 02  21.5000000 7I.Иванов Иван Иваныч"
    
    $str -replace " {2,}" -split " ",9 -join ","

     


    В случае foreach все тоже самое.

     

    gc test.txt | %{$_ -replace " {2,}" -split " ",9 -join ","}

     


    12 августа 2011 г. 7:05
    Отвечающий
  • Спасибо за помощь! 

    но начинают вылазить траблы.

    если  $str = "AAA BBBBBBBBBBBBB CCCCCCCCCCCCCCCCCCCC DD -453700.00 020310 020315 ПППП EEE FFFFFF 02 21.5000000 7I.Иванов Иван Иваныч"

    $str -replace " {2,}" -split " ",9 -join "," 
    у меня на выходе получилось : AAA,BBBBBBBBBBBBB,CCCCCCCCCCCCCCCCCCCC,DD-453700.00,020310,020315ПППП,EEE,FFFFFF0221.5000000 7I.Иванов Иван Иваныч
    т.е. часть текста просто примкнули друг к дружке. 

    12 августа 2011 г. 7:16
  • Спасибо за помощь! 

    но начинают вылазить траблы.

    если  $str = "AAA BBBBBBBBBBBBB CCCCCCCCCCCCCCCCCCCC DD -453700.00 020310 020315 ПППП EEE FFFFFF 02 21.5000000 7I.Иванов Иван Иваныч"

    $str -replace " {2,}" -split " ",9 -join "," 
    у меня на выходе получилось : AAA,BBBBBBBBBBBBB,CCCCCCCCCCCCCCCCCCCC,DD-453700.00,020310,020315ПППП,EEE,FFFFFF0221.5000000 7I.Иванов Иван Иваныч
    т.е. часть текста просто примкнули друг к дружке. 

     

    $str -replace " {2,}"," " -split " ",13 -join ","
    

     

    или так

     

    $str.split(" ",13,"RemoveEmptyEntries") -join ","
    

     


    • Предложено в качестве ответа Dmitry DavydovModerator 16 августа 2011 г. 14:21
    • Помечено в качестве ответа KazunEditor 18 августа 2011 г. 6:25
    12 августа 2011 г. 7:19
    Отвечающий
  • где можно почитать про эти параметры?
    12 августа 2011 г. 7:42
  • где можно почитать про эти параметры?
    Конечно же в msdn - http://msdn.microsoft.com/ru-ru/library/system.string.aspx
    12 августа 2011 г. 7:43
    Отвечающий
  • Я наверное не верно сформулировал проблему и не полностью показал файл. вот результат прогона моего txt через ексель и сохранение его в csv:

     

    AAA;SSSSSSSSSSSSS;DDDDDDDDDDDDDDDDDDDD;AA;\ufffd\ufffd\ufffd\ufffd\ufffd \ufffd\ufffd \ufffd\ufffd\ufffd\ufffd\ufffd;\ufffd\ufffd\ufffd\ufffd;\ufffd\ufffd\ufffd\ufffd;1306;QQQ;WWWWWW;2;\ufffd\ufffd\ufffd\ufffdv;7I;LL+ \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd;\ufffd\ufffd\ufffd\ufffdv\ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffdv \ufffd\ufffd\ufffd\ufffd\ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd \ufffd\ufffd\ufffd\ufffd\ufffd;;\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd \ufffd \ufffd\ufffd\ufffd\ufffd\ufffd;\ufffd\ufffd\ufffd\ufffdv;25211;2512;\ufffd\ufffd\ufffd\ufffdv;11111;2222.22;3333.43;23788;29051;-345.98;0.00;0;-345676.16;0.6000000;0;0;0.00;0.00;0.00;799.10;LLLLLLLLLLLLLLLLLLLL;;;;\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd;\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd;\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd;0;0;L\ufffd\ufffd;+;+;2;3456;234;\ufffd\ufffd;;\ufffd\ufffdL;;0.00;;;0.00;21;63;3;61277;150502;20275;100;0;\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd;\ufffd\ufffd\ufffd\ufffdv\ufffd \ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd 160 \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd;2345678289;4;160\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd \ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffdv;;LL;\ufffd\ufffd;0.00;0.00;0.00;0.00;0;NA;;0.00;

    \ufffd\ufffd\ufffd\ufffd\ufffd \ufffd\ufffd  - русские буквы.

     

    12 августа 2011 г. 8:22
  • Я наверное не верно сформулировал проблему и не полностью показал файл. вот результат прогона моего txt через ексель и сохранение его в csv:

     

     

     

    AAA;SSSSSSSSSSSSS;DDDDDDDDDDDDDDDDDDDD;AA;\ufffd\ufffd\ufffd\ufffd\ufffd \ufffd\ufffd \ufffd\ufffd\ufffd\ufffd\ufffd;\ufffd\ufffd\ufffd\ufffd;\ufffd\ufffd\ufffd\ufffd;1306;QQQ;WWWWWW;2;\ufffd\ufffd\ufffd\ufffdv;7I;LL+ \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd;\ufffd\ufffd\ufffd\ufffdv\ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffdv \ufffd\ufffd\ufffd\ufffd\ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd \ufffd\ufffd\ufffd\ufffd\ufffd;;\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd \ufffd \ufffd\ufffd\ufffd\ufffd\ufffd;\ufffd\ufffd\ufffd\ufffdv;25211;2512;\ufffd\ufffd\ufffd\ufffdv;11111;2222.22;3333.43;23788;29051;-345.98;0.00;0;-345676.16;0.6000000;0;0;0.00;0.00;0.00;799.10;LLLLLLLLLLLLLLLLLLLL;;;;\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd;\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd;\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd;0;0;L\ufffd\ufffd;+;+;2;3456;234;\ufffd\ufffd;;\ufffd\ufffdL;;0.00;;;0.00;21;63;3;61277;150502;20275;100;0;\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd;\ufffd\ufffd\ufffd\ufffdv\ufffd \ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd 160 \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd;2345678289;4;160\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd \ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffdv;;LL;\ufffd\ufffd;0.00;0.00;0.00;0.00;0;NA;;0.00;

    \ufffd\ufffd\ufffd\ufffd\ufffd \ufffd\ufffd  - русские буквы.

     

     

     

    И что с этим надо сделать? :)
    12 августа 2011 г. 8:34
    Отвечающий
  • Надо сохранять файл в формате UNICODE.
    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    • Предложено в качестве ответа Dmitry DavydovModerator 16 августа 2011 г. 14:22
    • Помечено в качестве ответа KazunEditor 18 августа 2011 г. 6:25
    15 августа 2011 г. 2:54
    Модератор