从Poweshell中的文件中删除特殊字符

时间:2018-09-26 04:58:20

标签: powershell

我有这个txt文件,我需要取出所有奇怪的字符,到目前为止,我尝试过类似的操作

 (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 :(得分:1)

尝试:

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

默认情况下,获取内容返回一个数组,但是如果您指定-Raw,它将返回一个字符串

答案 1 :(得分:1)

你好,胡安·曼努埃尔·桑切斯,

以下内容将从Get-Content获得的行数组中的每一行的开头修剪掉多余的字符。它作用于数组中的每一行,而无需显式遍历数组。

由于它很难对物品进行编码,因此非常脆弱。此外,它还会删除所有左侧填充空间。

$GC_Array -creplace '^[.! pÿ]{1,}' -replace '^0 {2,}'
  • -creplace是替换的区分大小写的版本
  • ^表示从行首开始
  • []是要替换的字符集
    字符列表=点,感叹号,空格,小写字母p,重音y
  • {1,}表示一个或多个
  • 第二个替换目标是行首,零位和两个或多个空格

希望有帮助,

答案 2 :(得分:0)

-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