如何从日志文件创建sql插入脚本
我有一个很长的日志文件。日志文件包含像
{someData:"", someData1:"", someData2:"", someData3:""}
{someData:"", someData1:"", someData2:"", someData3:""}
{someData:"", someData1:"", someData2:"", someData3:""}
我的任务是从这些对象生成SQL插入。
基本上我需要像这样生成SQL:
INSERT table_name (someData, someData1) VALUES (?, ?)
问题是:如何grep日志文件并遍历所有行,并仅选择相关字段以生成具有该对象字段值的插入方法?
回答如下:假设你实际上想要输入3行输出,我会使用sed,因为这只是单个行上的简单替换:
$ sed 's/{\([^:]*\)[^ ]* \([^:]*\).*/INSERT table_name (\1, \2) VALUES (?, ?)/' file
INSERT table_name (someData, someData1) VALUES (?, ?)
INSERT table_name (someData, someData1) VALUES (?, ?)
INSERT table_name (someData, someData1) VALUES (?, ?)
或者如果你喜欢awk:
$ awk -F'[{: ]' '{printf "INSERT table_name (%s, %s) VALUES (?, ?)\n", $2, $4}' file
INSERT table_name (someData, someData1) VALUES (?, ?)
INSERT table_name (someData, someData1) VALUES (?, ?)
INSERT table_name (someData, someData1) VALUES (?, ?)
但这绝对不是grep的工作。 grep
表示g/re/p
,即全局查找与正则表达式匹配的文本并打印它 - 它不用于操纵/更改该文本。
如何从日志文件创建sql插入脚本
我有一个很长的日志文件。日志文件包含像
{someData:"", someData1:"", someData2:"", someData3:""}
{someData:"", someData1:"", someData2:"", someData3:""}
{someData:"", someData1:"", someData2:"", someData3:""}
我的任务是从这些对象生成SQL插入。
基本上我需要像这样生成SQL:
INSERT table_name (someData, someData1) VALUES (?, ?)
问题是:如何grep日志文件并遍历所有行,并仅选择相关字段以生成具有该对象字段值的插入方法?
回答如下:假设你实际上想要输入3行输出,我会使用sed,因为这只是单个行上的简单替换:
$ sed 's/{\([^:]*\)[^ ]* \([^:]*\).*/INSERT table_name (\1, \2) VALUES (?, ?)/' file
INSERT table_name (someData, someData1) VALUES (?, ?)
INSERT table_name (someData, someData1) VALUES (?, ?)
INSERT table_name (someData, someData1) VALUES (?, ?)
或者如果你喜欢awk:
$ awk -F'[{: ]' '{printf "INSERT table_name (%s, %s) VALUES (?, ?)\n", $2, $4}' file
INSERT table_name (someData, someData1) VALUES (?, ?)
INSERT table_name (someData, someData1) VALUES (?, ?)
INSERT table_name (someData, someData1) VALUES (?, ?)
但这绝对不是grep的工作。 grep
表示g/re/p
,即全局查找与正则表达式匹配的文本并打印它 - 它不用于操纵/更改该文本。