尝试将文本文件上的sed替换的输出传输到MySQL,如下所示:
mysql -D WAR | sed -e "s/2000/$START/g" -e "s/2009/$END/g" < WAR.sql
那不行。也不是:
mysql -D WAR < sed -e "s/2000/$START/g" -e "s/2009/$END/g" < WAR.sql
这里有什么合适的解决方案?
答案 0 :(得分:7)
sed "s/2000/$START/g;s/2009/$END/g" WAR.sql | mysql -D WAR
答案 1 :(得分:5)
sed -e "s/2000/$START/g" -e "s/2009/$END/g" < WAR.sql | mysql -D WAR
答案 2 :(得分:1)
为了解释一下,命令行从左到右运行,除了重定向输入的情况。所以,你的第一个不起作用的原因是因为它正在获取mysql的OUTPUT并将其发送到sed,以及尝试将输入从文件'WAR.sql'重定向到sed。
在第二种情况下,你在mysql上使用文件重定向,除了你给它一个命令(在本例中是sed),这意味着shell可能试图打开一个名为[不存在的]文件'sed'在当前目录中。下一个输入重定向可能只是混淆了它,如果shell在解析时甚至那么远。
我相信(并投票赞成)gbacon的答案是实现我想你想要的最简单的解决方案。
答案 3 :(得分:0)
mysql -D WAR < <(sed -e "s/2000/$START/g" -e "s/2009/$END/g" < WAR.sql)