2010-08-10 25 views
2

从文本文件中获取字符串并从文本文件中搜索并替换另一个字符串的最佳方法是什么?从文本文件中获取字符串并从文本文件中搜索并替换另一个字符串的最佳方法是什么?

E.g c:\output.txtabcdc:\newfile.txtStack overflow is great。我想用abcd来代替great

什么是最好的方法来做到这一点?

+0

@moorecats:文件中带有“CMD”的SET /P命令(见Ghostdog的asnwer),为一个更短的Perl代码的内容)贵'output.txt'只持有一个字符串?或者是有多行与多个字符串? – 2010-08-10 07:38:24

+0

它拥有多个字符串 – moorecats 2010-08-10 09:56:19

+0

解释“最佳”:“更快的运行时间”,“更小的内存使用量”,“更小的代码”,“最可维护的代码”...... Perl的口号是“有多种方式可以做它”。根据您的需要,解决方案是不同的。 – dolmen 2010-08-10 15:03:18

回答

1

,你可以下载sed for windows然后

set /p var=<output.txt 
sed "s/%var%/Stackoverflow is great/g" newfile.txt 
+0

+1:经过多年的BAT,我看到“set/p”在 – 2010-08-10 10:16:13

1

因为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代码的开始(读数

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 
+0

之前我使用了DVK的解决方案。它效果很好。谢谢! – moorecats 2010-08-10 22:33:46

+0

@moorecats - 欢迎。如果它是有用的,随时投票(向上箭头旁边的答案)并接受(答案旁边的复选标记)我的答案。 – DVK 2010-08-10 23:32:52

相关问题