Breaking large file into pieces
4197,ATTT
rbr at bonnie.ATT.COM
Wed Sep 12 22:46:34 AEST 1990
In article <1990Sep11.134238.20218 at dg-rtp.dg.com> monroe at dg-rtp.dg.com (Mark A Monroe) writes:
>I want to rip a large file into pieces, naming new files according
>to an ID string in the large file. For example, the large file contains
>records that look like this:
>
>xxx-00001239 data data data
>description
> .
> .
>(variable length)
> .
> <---blank line
>xxx-00001489 data data data
>description
> .
> .
>(variable length)
> .
> <---blank line
>xxx-00001326 data data data
>
>When I find a line in the large data file that starts
>with "xxx-0000", I want to open a file named "xxx-0000<number>",
>like "xxx-00001489", and write every line, including
>the current one, into it. When I see another "xxx-0000",
>I want to close the file, open a new file named for the new id
>string, and continue writing. At the end of the large data
>file, close all files and exit.
>
>Any suggestions?
Use context split "csplit(1)" to break up the file efficiently. Then
use head/cut/mv to rename the pieces.
csplit -f aaa /"^xxx-0000"/ {99} <in-file-name>
rm aaa00
for FN in `ls aaa*`
do
NFN=`head -1 $FN | cut -d' ' -f1 `
mv $FN $NFN
done
Bob Rager
More information about the Comp.unix.shell
mailing list