也许我的问题对你来说有点明显,但我确实需要一个解决方案。我需要从 file.csv 生成 file.sql 文件,因此我使用以下命令:
cat file.csv |sed "s/\(.*\),\(.*\)/insert into table(value1, value2)
values\('\1','\2'\);/g" > file.sql
它运行完美,但是当值超过 9 时(例如 \10、\11 等...)它只会考虑第一个数字(在本例中为 \1)而忽略其余数字。
我想知道我是否遗漏了什么或者是否有其他方法可以做到。
谢谢 !
编辑 :
不起作用的示例:
我的 file.csv 看起来像
2013-04-01 04:00:52,2,37,74,40233964,3860,0,0,4878,174,3,0,0,3598,27.00,27
我得到了什么
插入表
val1、val2、val3、val4、val5、val6、val7、val8、val9、val10、val11、val12、val13、val14、val15、val16
值('2013-04-01 07:39:43',2,37,74,36526530,3877,0,0,6080,2013-04-01 07:39:430,2013-04-01 07:39:431,2013-04-01 07:39:432,2013-04-01 07:39:433,2013-04-01 07:39:434,2013-04-01 07:39:435,2013-04-01 07:39:436);
第九个元素之后我得到第一个元素而不是第十个、第十一个等等......
答案1
在 sed 中,您不能(可移植地)使用超过九个捕获括号。您最好用 Perl 编写脚本。