Issue
I've a file as follows:
[para1]
abc-1-10 interpreter=/bin/sed
abc-1-11 interpreter=/bin/sed
[para2]
abc-2-100 interpreter=/bin/sed
abc-2-205 interpreter=/bin/sed
abc-2-206 interpreter=/bin/sed
[para3]
abc-3-15 interpreter=/bin/sed
abc-3-18 interpreter=/bin/sed
I need each para written to a separate file i.e. the line [para1] and the two entries i.e. abc-1-10 and abc-1-11
I tried
awk -v Var="\[para" '$1~Var{p=1}/^$/{p=0}p /tmp/filename
which gives an error as: awk:warning: escape sequence '\[' treated as plain '['
I also tried awk -v Var="para" '$1~Var{p=1}/^$/{p=0}p /tmp/filename
and it prints the whole file!!. Any help is much appreciated.
Solution
Using awk
$ awk '/^\[para/ {close(para);para="file"++c".txt"}{print > para}' input_file
$ head file*.txt
==> file1.txt <==
[para1]
abc-1-10 interpreter=/bin/sed
abc-1-11 interpreter=/bin/sed
==> file2.txt <==
[para2]
abc-2-100 interpreter=/bin/sed
abc-2-205 interpreter=/bin/sed
abc-2-206 interpreter=/bin/sed
==> file3.txt <==
[para3]
abc-3-15 interpreter=/bin/sed
abc-3-18 interpreter=/bin/sed
Answered By - HatLess Answer Checked By - Candace Johnson (WPSolving Volunteer)