2013-11-22 4 views
0

Я пытаюсь найти/заменить длинный файл языка:Пакетная замена языкового файла с помощью grep?

$_LANG['accountinformation'] = "Account Information"; 
$_LANG['accountstatistics'] = "Account Statistics"; 

стать:

$_LANG['accountinformation'] = "Informations du compte"; 
$_LANG['accountstatistics'] = "Statistiques du compte"; 

зная, что у меня есть весь перевод в файл, как это:

Informations du compte 
Statistiques du compte 

Есть ли способ заменить эти фразы текстовым редактором, например BBedit, с помощью grep или что-то вместо копирования/вставки каждого из них вручную?

+0

Что вы ищете (я думаю) является 'sed' – KevinDTimm

+0

Notepad.exe« Заменить »(Ctrl-H)« заменить все »-Button? – Stephan

+0

Решил ли ваш запрос еще? – foxidrive

ответ

0

Вот способ сделать это с помощью гибридного сценария партии/VBS:

@echo off 
setlocal 

call :FindReplace "Account Statistics" "Statistiques du compte" Thefile.txt 
call :FindReplace "Account Information" "Informations du compte" Thefile.txt 

exit /b 

:FindReplace <findstr> <replstr> <file> 
set tmp="%temp%\tmp.txt" 
If not exist %temp%\_.vbs call :MakeReplace 
for /f "tokens=*" %%a in ('dir "%3" /s /b /a-d /on') do (
    for /f "usebackq" %%b in (`Findstr /mic:"%~1" "%%a"`) do (
    echo(&Echo Replacing "%~1" with "%~2" in file %%~nxa 
    <%%a cscript //nologo %temp%\_.vbs "%~1" "%~2">%tmp% 
    if exist %tmp% move /Y %tmp% "%%~dpnxa">nul 
) 
) 
del %temp%\_.vbs 
exit /b 

:MakeReplace 
>%temp%\_.vbs echo with Wscript 
>>%temp%\_.vbs echo set args=.arguments 
>>%temp%\_.vbs echo .StdOut.Write _ 
>>%temp%\_.vbs echo Replace(.StdIn.ReadAll,args(0),args(1),1,-1,1) 
>>%temp%\_.vbs echo end with 

Изменение thefile.txt к вашему имени. Сохраните скрипт как replace.cmd из текстового редактора и запустите его из командной строки.

0

Если вы пытаетесь сказать, что файлы выровнены, в английском файле есть ровно одно определение строки в строке, а французский содержит эквивалентность перевода в том же порядке, по одному в каждой строке - тогда простое paste с некоторой постобработкой должен это сделать.

Если sed диалект не поддерживает \t на вкладке, вы должны поставить вкладку буквального (Ctrl-V вкладку во многих оболочках).

Смежные вопросы