【发布时间】:2013-10-10 03:25:18
【问题描述】:
如果我不使用变量,这将有效。我不明白为什么当我将变量放入其中时它不起作用。任何人都可以帮忙吗?变量包含文件的路径。
sed s/$old/$new/ Current_series_list.txt"
【问题讨论】:
如果我不使用变量,这将有效。我不明白为什么当我将变量放入其中时它不起作用。任何人都可以帮忙吗?变量包含文件的路径。
sed s/$old/$new/ Current_series_list.txt"
【问题讨论】:
路径可能包含正斜杠。使用不同的字符来分隔命令参数,例如#:
sed "s#$old#$new#" Current_series_list.txt
当然,由于正则表达式元字符,这仍然很脆弱。考虑改用以下内容:
ruby -e '$stdin.each_line { |l| puts l.sub(ARGV[0], ARGV[1]) }' \
"$old" "$new" < Current_series_list.txt
Perl 中更便携的等价物留给读者练习。
【讨论】:
sed -i 进行就地编辑。不,您不能(轻松地)使用重定向来同时读取和写入文件;当然,输入重定向在这里不是正确的工具。
| sponge Current_series_list.txt 附加到命令中。
old 和 new 的值是多少?如果它们包含斜杠,那么它们会将 sed 模式扩展为无效的内容。您的尾随引号可能也没有帮助。
【讨论】: