在文本文件中添加引号
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 $_ })
Array method .ForEach()
通过传递给它的脚本块 ({ ... }
) 处理每个输入行。
'"{0}"' -f $_
通过 -f
, the string-format operator.
有效地将每个输入行 ($_
) 括在双引号中
如果您确实想使用正则表达式:
(Get-Content $home$user\appfiles\out.txt) -replace '^|$', '"'
正则表达式 ^|$
匹配输入字符串的开头 (^
) 和结尾 ($
),并用 "
字符替换两者,有效用双引号将输入字符串括起来。
至于你试过的:
^(.*?)
只匹配字符串 (^
) 的 start,没有别的,因为 .*?
- 由于使用了 非贪婪重复符号?
- 不匹配任何其他内容。
因此,替换与 "
匹配的内容只会在输入字符串的 start 放置一个 "
,而不是在末尾。
我需要将引号添加到包含 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 $_ })
Array method
.ForEach()
通过传递给它的脚本块 ({ ... }
) 处理每个输入行。'"{0}"' -f $_
通过-f
, the string-format operator. 有效地将每个输入行 (
$_
) 括在双引号中
如果您确实想使用正则表达式:
(Get-Content $home$user\appfiles\out.txt) -replace '^|$', '"'
正则表达式 ^|$
匹配输入字符串的开头 (^
) 和结尾 ($
),并用 "
字符替换两者,有效用双引号将输入字符串括起来。
至于你试过的:
^(.*?)
只匹配字符串 (^
) 的 start,没有别的,因为 .*?
- 由于使用了 非贪婪重复符号?
- 不匹配任何其他内容。
因此,替换与 "
匹配的内容只会在输入字符串的 start 放置一个 "
,而不是在末尾。