powershell - 替换.txt文件中的行

时间:2015-04-21 08:33:17

标签: powershell

我正在使用PowerShell,我需要替换.txt文件中的一行。

.txt文件在行尾始终有不同的编号。

例如:

...............................txt (first)....................................

appversion= 10.10.1



............................txt (a second time)................................

appversion= 10.10.2


...............................txt (third)...................................

appversion= 10.10.5

我需要替换它后面的appversion +数字(数字总是不同的)。我在变量中设置了所需的值。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

是的,你可以使用正则表达式。 请使用文本和版本号

调用$myString$verNumber变量
$myString = "appversion= 10.10.1";
$verNumber = 7;

您可以使用-replace运算符来获取版本部分并以这种方式仅替换最后一个subversion编号

$mystring -replace 'appversion= (\d+).(\d+).(\d+)', "appversion= `$1.`$2.$verNumber";

答案 1 :(得分:0)

您从评论中看到的这个问题的一部分是,您正在尝试替换文件中的文本并在时将其保存回相同的文件还在读它

我会尝试在解决此问题时展示类似的解决方案。我们将再次使用-replace的功能作为数组运算符。

$NewVersion = "Awesome"
$filecontent = Get-Content C:\temp\file.txt
$filecontent -replace '(^appversion=.*\.).*',"`$1$NewVersion" | Set-Content C:\temp\file.txt 

此正则表达式将匹配以" appversion ="开头的行。直到最后一段时间。由于我们将文本存储在内存中,因此我们可以将其写回同一文件。将$NewVersion更改为数字...除非这是您的版本控制结构。

不确定您要保留的号码

关于您要保留的数字的哪一部分(如果有)。如果您打算更改整数,则可以.*\.一个空格。这样你就可以忽略等号后的一切。