Показать полную графическую версию : [решено] Замена текста одного файла, текстом из другого файла
ninjaman
10-03-2017, 00:20
Доброго времени суток!
Заранее извиняюсь, если такая тема уже была, сходу не смог найти.
Есть файл file1.txt с содержимым
Старый текст блаблабла Старый текст2 блаблабла Старый текст3 и т.д.
Есть файл file2.txt с содержимым (строк несколько тысяч)
Старый текст=Новый текст
Старый текст2=Новый текст2
Старый текст3=Новый текст3
и т.д. построчно
Задача:
Заменить в file1.txt все вхождения текста левой части в file2.txt на правую. Я новичок в этом и буду очень признателен за помощь.
megaloman
10-03-2017, 10:42
ninjaman, Есть файл file1.txt с содержимым Из приведенного примера не ясно, что за файл: там очень длинная строка ( без символов cr+lf), или это нормальный текстовый файл. При очень длинных строках Ваша задача средствами СMD не решается. Опять же, будут проблемы при обработке строк, содержащих символы ! ( ) и многие другие. Кстати, а в какой кодировке файлы? ИМХО, эту задачу лучше (надёжнее и, похоже, эффективнее по времени исполнения) сделать в vbs.
ninjaman
10-03-2017, 12:05
megaloman, Извиняюсь, неправильно написал. 1 файл имеет xml формат
<main_form>
<form id="1">
<param param1="Старый текст" param2="Старый текст3" />
<param param1="Старый текст2" />
</form>
<form id="2">
<param param1="Старый текст3" />
<param param1="Старый текст4" />
</form>
</main_form> (param1, param2 - для примера, на их месте может быть все что угодно.), а второй простой построчный текст. Кодировки везде UTF-8.
ninjaman, в таком случае, упаковывайте образец файлов 1 и 2 в архив и прикладывайте к сообщению. Кстати, обычно файл 2 должен быть отнюдь не в виде «Старый текст=Новый текст», а в виде «Путь в файле xml=новое значение» или попросту файл xml. Что это за xml — файл 1?
ninjaman
10-03-2017, 15:40
Iska, Там именно так (Старый текст=Новый текст). Это переводы к одной игре. Таких файлов много. Пример приложил.
ninjaman, теперь покажите весь SocialActionInfo.xml и все:
Таких файлов много »
Хочу посмотреть на них. Упакуйте в архив и выложите на RGhost или Яндекс.Диск.
ninjaman
10-03-2017, 19:25
Iska, Он весь и есть. Вот именно в таком виде как я выложил и надо заменить текст. В остальных файлах принцип тот же, только названия другие.
Вот я бы и хотел на них поглядеть.
В общем, не хотите. Ни файлы выкладывать, ни первичную задачу толком описать. Ну, да, бога ради.
На PowerShell:
$sSourceFile = 'C:\Мои проекты\0050\SocialActionInfo.txt'
$sDestFile = 'C:\Мои проекты\0050\SocialActionInfo.xml'
$cPatterns = Get-Content -Path $sSourceFile -Encoding UTF8 -ReadCount 0
$sContent = [System.IO.File]::ReadAllText($sDestFile, [System.Text.Encoding]::UTF8)
$cPatterns[1..$cPatterns.Length] | ForEach-Object -Process {
$cPattern = $_ -split '='
$sContent = $sContent.Replace($cPattern[0], $cPattern[1])
}
Set-Content -Path $sDestFile -Encoding UTF8 -Value $sContent
ninjaman
11-03-2017, 00:59
Iska, Спасибо огромное!!! Все работает)) А Задача - просто контент перевести для игрового сайта.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.