【问题标题】:shell script which creates different file for each SQL query为每个 SQL 查询创建不同文件的 shell 脚本
【发布时间】:2019-07-25 13:47:01
【问题描述】:

我的文件包含多个 SQL 查询,由 ;我想要一个为每个 SQL 查询创建不同文件的脚本

【问题讨论】:

标签: bash shell scripting


【解决方案1】:

欢迎来到 SO。在这个网站上你会找到愿意帮助你的专业程序员和编程爱好者,但你应该先自己做一些努力。

我将为您提供解决问题的先机。在新/空目录中尝试以下代码,看看它做了什么;-)

$ myfile=tmp.log
$ echo 'insert into bla where x=1; select * from derp; delete * from * where 1=1;' > $myfile
$ while read -d ';' query; do echo $query >> `echo $query | md5sum | grep -Eo '^[^ ]*'`.sql ; done < $myfile
$ for i in *sql; do echo -n "$i: "; cat $i; done
397ef94bdde1d41e546ad00cd0ca0e20.sql:  delete * from * where 1=1
cdd2e2af0889c51ab9dc3be7b2a359e2.sql:  select * from derp
e617194b23b1cac13bd8c743fb38f84c.sql: insert into bla where x=1

编辑:解释:

这一行从$myfile逐行读取,由-d ':'分隔,并将查询$query回显到屏幕:
while read -d ';' query; do echo $query ; done &lt; $myfile

循环体生成一个内容为$query的文件。我不知道您想如何命名每个文件,因此我冒昧地将文件命名为查询的md5sumgrep 仅用于删除md5sum 字符串的一小部分。
echo $query &gt;&gt; `echo $query | md5sum | grep -Eo '^[^ ]*'`.sql

` 包裹的所有内容都会首先执行,并使用从该命令返回的数据,但也会使用$()。示例:

$ ls `echo $HOME`
$ ls $(echo $HOME)

【讨论】:

  • 我是Shell脚本新手,你能解释一下这里的代码吗,谢谢
  • 没问题。你明白解释了吗?
猜你喜欢
  • 1970-01-01
  • 2013-04-06
  • 2018-05-19
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-02
相关资源
最近更新 更多