在几个大文本文件的内容中,我的目标是用新的字符串替换所有出现的特定字符串,同时替换300 不同的字符字符串。
我有什么方法可以使用逗号或制表符分隔搜索和替换矩阵这样做吗? (实际字符串的长度和字符类型差异很大,但不包含,
或TAB
)
currentstring1,newstring1
currentstring2,newstring2
currentstring3,newstring3
aB9_./cdef,newstring4
.
currentstring300,newstring300
答案 0 :(得分:0)
这是让你入门的东西。如果替换文件是~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
}
答案 1 :(得分:0)
在服务器上,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' *