如何替换最后一列的文字?

如何替换最后一列的文字?

如果字符串的最后 3 个字符是“-TA”,是否有一种简单的方法可以转换最后一列(8)中的文本?例如,如果最后一列中的文本字符串是“AB-TA”,它将把文本转换为“AB.NO”如果字符串“-TA”不在最后一列(最后 3 个字符)的末尾,则不会进行任何更改。测试文件中没有标题。请参阅下面的示例数据。

感谢您的任何建议。

test.txt输入:

04/02/2014,4.620,4.620,4.400,4.580,166535,0,A
04/02/2014,5.740,5.820,5.530,5.750,516280,0,AB
04/02/2014,48.950,49.190,48.060,48.690,205951,0,AB-TA
04/02/2014,62.670,62.760,62.440,62.640,514203,0,CD
04/02/2014,25.020,25.060,24.750,24.810,159602,0,CD-TA

test.txt 输出

04/02/2014,4.620,4.620,4.400,4.580,166535,0,A
04/02/2014,5.740,5.820,5.530,5.750,516280,0,AB
04/02/2014,48.950,49.190,48.060,48.690,205951,0,AB.NO
04/02/2014,62.670,62.760,62.440,62.640,514203,0,CD
04/02/2014,25.020,25.060,24.750,24.810,159602,0,CD.NO

答案1

您可以使用$正则表达式锚点来仅匹配行尾字符:

Get-Content in.txt|
ForEach-Object {$_-replace'-TA$','.NO'}|
Set-Content out.txt

如果您想将结果保存在同一个文件中,那么您必须将整个文件预加载到内存中:

@(Get-Content test.txt)|
ForEach-Object {$_-replace'-TA$','.NO'}|
Set-Content test.txt

相关内容