在文本文件中添加引号

时间:2019-12-10 01:02:58

标签: powershell quotation-marks

我需要将引号添加到包含500行文本的文本文件中。 格式不一致。它包含破折号,点,数字和字母。例如

  

1527c705-839a-4832-9118-54d4Bd6a0c89

     

16575getfireshot.com.FireShotCaptureWebpage屏幕

     

3EA2211E.GestetnerDriverUtility

我试图对此进行编码

$Flist = Get-Content "$home\$user\appfiles\out.txt"
$Flist | %{$_ -replace '^(.*?)', '"'}

我得到的结果仅添加到行的开头。

"Microsoft.WinJS.2.0

预期结果应该是

“ Microsoft.WinJS.2.0”

  

如何在每行的末尾添加引号?

2 个答案:

答案 0 :(得分:1)

在您的情况下(需要PSv4 +),无需严格使用正则表达式(正则表达式):

(Get-Content $home\$user\appfiles\out.txt).ForEach({ '"{0}"' -f $_ })

如果您确实想使用正则表达式:

(Get-Content $home\$user\appfiles\out.txt) -replace '^|$', '"'

正则表达式^|$与输入字符串的开头(^)和结尾($)都匹配,并用"字符替换两者,从而有效地将输入双引号的字符串。


关于您尝试过的事情

  

^(.*?)

仅与字符串(^)的开始匹配,对于.*?-由于使用了非贪婪重复符号?-不匹配。

因此,用"替换匹配项只会在输入字符串的开始而不是结尾处放置"

答案 1 :(得分:0)

您可以使用正则表达式来匹配两者:

  • ^(.*?)行的开头
  • |
  • $行的结尾

^(.*?)|$

$Flist = Get-Content "$home\$user\appfiles\out.txt"
$Flist | %{$_ -replace '^(.*?)|$', '"'}