使用替换矩阵一次替换多个字符串

Replace multiple character strings at once using a replace matrix

在几个大文本文件的内容中,我的目标是用新字符串替换所有出现的特定字符串,同时 for 300 different 个字符串。

有什么方法可以使用像这样的逗号或制表符分隔的搜索和替换矩阵来做到这一点? (实际字符串的长度和字符类型差异很大,但不包含,TAB

currentstring1,newstring1
currentstring2,newstring2
currentstring3,newstring3
aB9_./cdef,newstring4
.
currentstring300,newstring300

这里有一些可以帮助您入门的东西。如果替换文件是 ~300 行,那么 Import-Csv 应该没问题。但是,如果要替换字符串的文件很大,Get-Content 就会出问题。它将尝试将整个文件读入内存。您将需要逐行遍历文件读取。

[cmdletbinding()]
Param()

$thefile = './largetextfile.txt'
$replfile = './repl.txt'

$reps = Import-Csv -Path $replfile -Header orgstring,repstring
foreach ($rep in $reps) {
    Write-Verbose $rep
}

$lines = Get-Content -Path $thefile
foreach ($line in $lines) {
    Write-Verbose $line
    $newline = $line

    foreach ($rep in $reps) {
        $newline = $newline -replace $rep.orgstring,$rep.repstring
    }

    Write-Verbose $newline
}

在服务器上,unix: 1. 在文本编辑器中制作如下重命名矩阵,然后复制它。 2. 在文件所在的服务器目录中,按原样粘贴多行重命名矩阵。 3.进入。 4. 一些字符(如斜杠)如果出现在字符串中可能需要转义,最后的 * 可能会被替换以指定文件。

perl -pi -e 's/FINDTEXT1/REPLACETEXT1/g' *
perl -pi -e 's/FINDTEXT2/REPLACETEXT2/g' *
perl -pi -e 's/FINDTEXT3/REPLACETEXT3/g' *