Split file in Linux before a string occurs

In this short article we will see how we can split a file in Linux using a STRING as the split delimiter. I will use this file as example :

INSERT INTO w12w12 asd asd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr g w12w12 asd a
sd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr g w12
w12 asd asd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr
INSERT INTO w12w12 asd asd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr g w12w12 asd a
sd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr g w12
w12 asd asd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs g
fdr g w12w12 asd asd sfs efsdfs gfdr
INSERT INTO w12w12 asd asd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr g w12w12 asd
asd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr g w1
2w12 asd asd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs

 gfdr g w12w12 asd asd sfs efsdfs gfdr
INSERT INTO w12w12 asd asd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr g w12w12 asd a
sd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr g w12
w12 asd asd sfs efsdfs gfdr
The script does not make any sense, all i need is the string i will use to separate the content into different files. For the split task i will use the awk commnad
  • we will look for the "INSERT INTO" string.
The syntax is as bellow:
awk '/INSERT INTO/{n++}{print "out" n ".txt" }' file.txt
After you run the command you will end-up with as many new out"n".txt files as you have  "INSERT INTO" string findings. See output results:
[dbadmin@primary test]$ ll
total 4
-rw-r--r-- 1 dbadmin verticadba 1064 Mar 23 17:35 file.txt
[dbadmin@primary test]$ awk '/INSERT INTO/{n++}{print "out" n ".txt" }' file.txt
[dbadmin@primary test]$ ll
total 20
-rw-r--r-- 1 dbadmin verticadba 1068 Mar 23 17:43 file.txt
-rw-r--r-- 1 dbadmin verticadba  242 Mar 23 17:43 out1.txt
-rw-r--r-- 1 dbadmin verticadba  308 Mar 23 17:43 out2.txt
-rw-r--r-- 1 dbadmin verticadba  309 Mar 23 17:43 out3.txt
-rw-r--r-- 1 dbadmin verticadba  209 Mar 23 17:43 out4.txt
[dbadmin@primary test]$ cat out1.txt
INSERT INTO w12w12 asd asd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr g
w12w12 asd asd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr g w12w12 asd
asd sfs efsdfs gfdr g w12w12 asd asd sfs efsdfs gfdr g w12w12 asd asd sfs
efsdfs gfdr
I hope this was useful.