Как лучше всего взять строку из текстового файла, выполнить поиск и заменить другую строку на строку из текстового файла? - PullRequest
2 голосов
/ 10 августа 2010

Как лучше всего взять строку из текстового файла, выполнить поиск и заменить другую строку строкой из текстового файла?

Например, c:\output.txt имеет abcd и c:\newfile.txt имеетStack overflow is great.

Я хотел бы заменить great на abcd.

Каков наилучший подход для этого?

Ответы [ 2 ]

1 голос
/ 10 августа 2010

Поскольку Perl был вашим первым тегом, я думаю, вы захотите версию решения для Perl.

Если на вашей Windows установлен Perl, работает следующее (для удобства чтения добавлены пробелы):

C:\>perl  -e "open(my $rf, '<', 'c:\output.txt') 
                 || die \"Can not open c:\output.txt: $!\"; 
              my $replace = <$rf>; 
              chomp $replace; 
              close $rf; 
              local $^I='.bak'; # Replace inside the file, make backup
              while (<>) {
                  s/great/$replace/g; 
                  print;
    }" c:\newfile.txt

C:\>type C:\newfile.txt
Stack overflow is abcd

Чтобы быть немного более идиоматическим в Windows, вы можете заменить начало кода Perl (чтение содержимого файла) командой SET /P команды "cmd" (см. Ответ Ghostdog), что намного короче. Код Perl:

C:\> set /p r=<c:\output.txt
C:\> perl  -pi.bak -e "s/great/%r%/g;" c:\newfile.txt

C:\> type C:\newfile.txt
Stack overflow is abcd
1 голос
/ 10 августа 2010

вы можете скачать sed для windows , а затем

set /p var=<output.txt
sed "s/%var%/Stackoverflow is great/g" newfile.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...