在文本文件中添加引号

add quotation mark to a text file powershell

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

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

16575getfireshot.com.FireShotCaptureWebpageScreens

3EA2211E.GestetnerDriverUtility

我试过编码这个

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

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

"Microsoft.WinJS.2.0

预期的结果应该是

"Microsoft.WinJS.2.0"

How to add quotation-mark to the end of each line as well?

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

  • 行首^(.*?)
  • |
  • 行尾$

^(.*?)|$

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

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

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

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

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

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


至于你试过的

^(.*?)

只匹配字符串 (^) 的 start,没有别的,因为 .*? - 由于使用了 非贪婪重复符号? - 不匹配任何其他内容。

因此,替换与 " 匹配的内容只会在输入字符串的 start 放置一个 ",而不是在末尾。