![如何替换最后一列的文字?](https://linux22.com/image/1440343/%E5%A6%82%E4%BD%95%E6%9B%BF%E6%8D%A2%E6%9C%80%E5%90%8E%E4%B8%80%E5%88%97%E7%9A%84%E6%96%87%E5%AD%97%EF%BC%9F.png)
如果字符串的最后 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