使用替换矩阵一次替换多个字符串
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' *
在几个大文本文件的内容中,我的目标是用新字符串替换所有出现的特定字符串,同时 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' *