![]() |
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.
|
|
google unix.com
|
|||||||
| Forums | Register | Forum Rules | Links | Albums | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here. |
More UNIX and Linux Forum Topics You Might Find Helpful
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Split large file and add header and footer to each file | ashish4422 | Shell Programming and Scripting | 1 | 04-15-2008 06:12 AM |
| Split a file with no pattern -- Split, Csplit, Awk | madhunk | UNIX for Dummies Questions & Answers | 10 | 12-17-2007 12:57 PM |
| split the file name | rinku | Shell Programming and Scripting | 1 | 05-28-2007 01:47 AM |
| Need to split the file | getdpg | Shell Programming and Scripting | 11 | 09-04-2006 03:08 AM |
| How to split file by tags inside file? | spookyrtd99 | Shell Programming and Scripting | 1 | 07-31-2006 12:50 AM |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
||||
|
Split file using awk
I am trying to read a file and split the file into multiple files. I need to create new files with different set of lines from the original file. ie, the first output file may contain 10 lines and the second 100 lines and so on. The criteria is to get the lines between two lines starting with some characters(variable)
eg. A sample input file DOC100 aaaaaa bbbbbb cccccccc END DOC200 ddddddd eeeeeee END I need to send the lines between DOC100 and END to out.1 and lines between DOC200 and the next END to out.2 I thought I could do this using awk and I tried the following command but it didn't work. k=grep DOC $filename|cut -c4-6 awk -v cn=$k '/DOC$cn/,/END/ { print $0 }' $filename >$outfile Can anyone help me on this? Thanks |
|
||||
|
Thanks zazzybob and Ygor for your help. But I see some problem with each of your scripts.
zazzybob's script - First of all I have a fixed length data file that I need to split. The script creates seperate files with the intended data but it ignores the spaces in the fields, means it concatenates the fields leaving out the spaces in them. Ygor's script - Your script creates only one file named DOC with the data between the last DOC/END. But it puts the data like what it is in the input file, that is a good sign. |
|
|||||
|
I didn't read the bit about filenames like "doc.1" before. Try this instead...
Code:
awk '/^DOC/{f="doc."++d} f{print > f} /^END/{close f; f=""}' infile
==> doc.1 <== DOC100 aaaaaa bbbbbb cccccccc END ==> doc.2 <== DOC200 ddddddd eeeeeee END |
|
||||
|
zazzybob's script works fine now.
Ygor's script still have an issue. It creates seperate output files now but it puts lines starting with DOC & END also in the output files. I just need the data between those lines. Thanks agin for the help. |
| Sponsored Links | ||
|
|
![]() |
| Bookmarks |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|