我有很多.txt文件,我需要在字符“%”之后小写字符串/单词的每个实例,而不是在第一个单词之后的下面的单词。我试图在PowerShell中做到这一点。
我有这个:
%WORD WORD2 WORD3 %WORD4
我需要这个:
%word WORD2 WORD3 %word4
下面的代码使文件中的所有内容都小写,我只需要在字符“%”后的第一个单词的所有实例中执行此操作。
$path=".\*.txt"
Get-ChildItem $path -Recurse | foreach{
(Get-Content $_.FullName).ToLower() | Out-File $_.FullName
}
答案 0 :(得分:0)
抱歉安藤,我在评论中忘记了你的问题。
这就是正则表达式的样子:
(?s)(?<=%)(\w+).*(?=;)
这里的代码是小写第一个单词:
$path=".\*.txt"
$callback = { param($match) $match.Groups[1].Value.ToLower() }
$rex = [regex]'(?s)(?<=%)(\w+).*(?=;)'
Get-ChildItem $path -Recurse | ForEach-Object {
$rex.Replace((Get-Content $_ -raw), $callback) | Out-File $_.FullName
}
注意:强>
如果您不需要为 %
和;
之间的每个单词执行此操作,那么正则表达式将是:
(?<=%)(\w+)