我有一个包含查询的文件,每个查询以“;”结尾,我想添加一个“COMMIT;BEGIN;”每 100 个查询。查询可能需要超过 1 行。
例如:
INSERT INTO table
VALUES(...);
DELETE FROM table WHERE ...;
UPDATE table
SET ...;
所以我想替换每 100 个“;”与“提交;开始;” (我知道我必须在文件的开头添加一个 BEGIN; 并在最后做一些事情,但这很容易)
我需要在 shell 脚本中执行此操作,但我不是 Linux 专家,使用 sed 还是 awk 更好(而且文件大小可能很大,如 4GB)?我知道这些命令的基础知识,但我不知道我是否可以在这里做我想做的事情......
谢谢!
最佳答案
如果您可以保证 ;
位于行尾,或者如果您并不真正关心具有多个 ;
的行,那么很容易解决方案(未经测试)是:
awk '/;/{ count+=1 } {print} count==100 { print "COMMIT; BEGIN"; count=0 }'
关于linux - 在文件中每第 n 次出现字符时插入内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10901745/