Удаление специальных символов из файла в Poweshell - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть этот текстовый файл, и мне нужно убрать все странные символы, поэтому я попробовал что-то вроде

 (get-content C:\Users\JuanMa\Desktop\UNB\test.txt) -replace ('.','') | out-file C:\Users\JuanMa\Desktop\UNB\test2.txt

К сожалению, я получаю белый документ на test2.txt

Это документ, который я пытаюсь очистить

.!..p.ÿÿ.!..!   .!.           PESCATORE
.!.           LEMON SPICE S.R.L.
      600 SUR DE MULTIPLAZA ESCAZU
              3-102-599284
     TEL: 2289-8010 FAX: 2289-5129
          INFO@PESCATORECR.COM
.!..!             Terminal POS: BARRA
.!.
.!           ------------FACTURA-----------
.!      .!0    Mesa: B07
.!..!   NUMERO : 0068371  
.!.Mesa # : B07         Fecha: 25/09/2018
Mesero : CARLOS
Cajero : JOHN        Hora : 22:35:06
# Pers : 1           Comandas: 1
Apertura: 22:34      Tiempo/E: 1 Min
.!      .!..!   .!       CANT  DESCRIPCION               MONTOS
.!.---------------------------------------
   1.00 LIMONADA HIERBABUE    2,033.00
.!                SubTotal :          2,033.00
          %IVA     :            264.00
          %SER     :            203.00
.!      .!.        TOTALES :      2,501.00
.!..!             (COLONES) 
En Dolares : 4.55
.!.>> Pago: EFECTIVO> 2,555.00
>> Recibe: 2,555.00
>> Cambio: 54.00
.!      
   www.gruposinertech.com Vers.15.09A
.!.
     AUTORIZADO MEDIANTE RESOLUCION
          11-97 DE LA D.G.T.D







.i
.@

Спасибо за помощь!

Ответы [ 3 ]

0 голосов
/ 26 сентября 2018

Оператор -replace использует регулярные выражения, которые используют точку для обозначения ЛЮБОГО символа, поэтому это удаляет все.Если вы хотите удалить буквенные периоды, то добавьте перед ними обратную косую черту:

(get-content C:\Users\JuanMa\Desktop\UNB\test.txt) -replace ('\.','') | out-file C:\Users\JuanMa\Desktop\UNB\test2.txt

К сожалению, это удаляет ВСЕ периоды, поэтому периоды, которые вы можете захотеть сохранить, например, в числах, будут потеряны.

Чтобы убрать несколько плохих символов, включите их в квадратные скобки.Это удаляет 'ÿ', '!'

(get-content C:\Users\JuanMa\Desktop\UNB\test.txt) -replace ('[ÿ!]','') | out-file C:\Users\JuanMa\Desktop\UNB\test2.txt

Вы можете объединить эти операторы -replace в несколько подстановок:

# Characters ÿ or !
# Replace .! at the start of the line with blank

(get-content C:\Users\JuanMa\Desktop\UNB\test.txt) `
-replace ('[ÿ!]','') `
-replace ('^.!','') |  
out-file C:\Users\JuanMa\Desktop\UNB\test2.txt
0 голосов
/ 26 сентября 2018

Привет, Хуан Мануэль Санчес,

. Следующее будет обрезать нежелательные символы с начала каждой строки в массиве строк, которые вы получаете из Get-Content.он действует на каждую строку в массиве без явного повторения в массиве.

это ОЧЕНЬ хрупко, поскольку оно жестко кодирует предметы.кроме того, он удаляет все левые пробелы.

$GC_Array -creplace '^[.! pÿ]{1,}' -replace '^0 {2,}'
  • -creplace - чувствительная к регистру версия замены
  • ^ означает запуск в началестрока
  • [] - набор символов для замены
    список символов = точка, восклицательный знак, пробел, строчные буквы p, ударение y
  • {1,} означает один или несколько
  • 2-я замена целей в начале строки, нулевая цифра и два или более пробела

надеюсь, что это поможет,
ли

0 голосов
/ 26 сентября 2018

Try:

(get-content -Raw C:\Users\JuanMa\Desktop\UNB\test.txt).Replace ('.','') | out-file C:\Users\JuanMa\Desktop\UNB\test2.txt

Get-content возвращает массив по умолчанию, но если вы укажете -Raw, он вернет строку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...