Let say you have a file with multiple sections, delimited by the character sequence -|
, and you need to create multiple files, one for each section. How you do that ?
Basically you can use three tools for the job.
Use csplit
Csplit is a very useful and not well know utility, present into coreutils
package.
csplit --quiet --prefix=outfile infile.txt "/-|/+1" "{*}"
Use awk
awk '{print $0 " -|"> "output" NR}' RS='-\\|' infile.txt
Use bash/perl/python
Here i give you the bash one-liner version, but you can also use perl, python, ruby or any other scripting language:
cat infile.txt | ( I=0; echo -n "" > output0; while read line; do echo $line >> output$I; if [ "$line" == '-|' ]; then I=$[I+1]; echo -n "" > output$I; fi; done )