从文本文件中获取字符串并从文本文件中搜索并替换另一个字符串的最佳方法是什么?从文本文件中获取字符串并从文本文件中搜索并替换另一个字符串的最佳方法是什么?
E.g c:\output.txt
有abcd
和c:\newfile.txt
有Stack overflow is great
。我想用abcd
来代替great
。
什么是最好的方法来做到这一点?
从文本文件中获取字符串并从文本文件中搜索并替换另一个字符串的最佳方法是什么?从文本文件中获取字符串并从文本文件中搜索并替换另一个字符串的最佳方法是什么?
E.g c:\output.txt
有abcd
和c:\newfile.txt
有Stack overflow is great
。我想用abcd
来代替great
。
什么是最好的方法来做到这一点?
,你可以下载sed for windows然后
set /p var=<output.txt
sed "s/%var%/Stackoverflow is great/g" newfile.txt
+1:经过多年的BAT,我看到“set/p”在 – 2010-08-10 10:16:13
因为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
@moorecats:文件中带有“CMD”的
SET /P
命令(见Ghostdog的asnwer),为一个更短的Perl代码的内容)贵'output.txt'只持有一个字符串?或者是有多行与多个字符串? – 2010-08-10 07:38:24它拥有多个字符串 – moorecats 2010-08-10 09:56:19
解释“最佳”:“更快的运行时间”,“更小的内存使用量”,“更小的代码”,“最可维护的代码”...... Perl的口号是“有多种方式可以做它”。根据您的需要,解决方案是不同的。 – dolmen 2010-08-10 15:03:18