【发布时间】:2014-12-03 23:52:28
【问题描述】:
-
我想替换以“M”开头的字符串的第 26 个字符,并且我想在后面的任何字符串中放入一个从零开始的序列号和 Sequence# + 1。
李> 文件包含这些字符串:
M453023455697RR23047230426485111814XXXXXX
RAPPAREL/ACCESSORIES
SHOES
L03984798239409970924MM09709745340979XXXXXX
M98802734207KK972839482326485111814XXXXXX
- 我的 Powershell 脚本:
$SequenceStart = 1
$String = "M"
$str2 = "$xfiles.substring(0,24)"
$str3 = "$xfiles.substring(25)"
$str4 = "$xfiles.substring(26,53)"
$str5 = "$xfiles.substring(0,80)"
$Line = "$str2""$str+1""$str4"
$xfiles = Get-ChildItem $InFiles
Write-Host "Found " ($xfiles | Measure-Object).count " files to process"
If (($xfiles | Measure-Object).count -gt 0) {
foreach ($xfile in $xfiles)
{
Write-Host "Processing file: $xFile`r"
$cnt = $SequenceStart
$content = Get-Content -path $xfile
$content | foreach {
If ($_.Contains($String)) {
$_ -replace $String, $Line}
else {$_}
【问题讨论】:
-
您有问题吗?
-
您的代码也不完整,因为我们看不到
$InFiles的声明位置......并不是说它真的会影响问题,但可能还有其他内容缺失,例如if语句上的右大括号和foreach。你没说到底有什么问题? -
是的,这个脚本不起作用,我想知道如何实现它。我也忘了声明一个变量$ str = $ str3。但即使在此之后它也不起作用。谢谢
-
$InFiles = 包含数据的文件 CDMS.txt 的路径。我想知道如何编写 IF 语句,或者是否可以调整此脚本。任何提示将不胜感激。谢谢
-
序列号...是否代表M行的每个匹配项?所以文件中的第 5 M 行的序列号是 5?它是替换第 26 个字符还是将其向下推。完成后,您将如何处理数据?将其写回同一个文件?
标签: powershell replace character substring