Loop through file and write out lines to file(s)


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Loop through file and write out lines to file(s)
# 1  
Old 07-04-2005
Error Loop through file and write out lines to file(s)

Hi,

I am new to ksh scripting so your help will be much appreciated.

I have a file called file.txt which looks like this

Header 20050702 20050703
ABC
DEF
Header 20050703 20050704
123
456
Header 20050704 20050705
XXX
YYY

What I am trying to do is write out each of the record sets to its own file. For example, file1.txt will contain:
Header 20050702 20050703
ABC
DEF

and file2.txt will contain:

Header 20050703 20050704
123
456

etc.

What is the best way to approach this?

Thank you in advance.
# 2  
Old 07-04-2005
nawk -f Jtrinh.awk file.txt

here's Jtrinh.awk:
Code:
FNR % 3 == 1 {
  if ( i ) close(out)
  out= "file" ++i ".txt"
}
{
  print >> out
}


Last edited by vgersh99; 07-04-2005 at 11:55 PM..
# 3  
Old 07-05-2005
Thanks vgersh99,

It works well, however, I left out an important piece of information, that is I don't know for sure how many sets of records there are in the file. How would I handle that?

Thanks again.
# 4  
Old 07-05-2005
Quote:
Originally Posted by Jtrinh
Thanks vgersh99,

It works well, however, I left out an important piece of information, that is I don't know for sure how many sets of records there are in the file. How would I handle that?

Thanks again.
wouldn't the posted code work for any number of records?
or do you mean something else?
a sample [non=working] sample would help.
# 5  
Old 07-05-2005
Code:
awk 'begin{of="file0.txt"}/^Header/{close(of);of="file"++i".txt";}{print>of}' file.txt

GNU Awk 3.1.3
Copyright (C) 1989, 1991-2003 Free Software Foundation.
# 6  
Old 07-05-2005
Quote:
Originally Posted by r2007
Code:
awk 'begin{of="file0.txt"}/^Header/{close(of);of="file"++i".txt";}{print>of}' file.txt

GNU Awk 3.1.3
Copyright (C) 1989, 1991-2003 Free Software Foundation.
  1. begin != BEGIN
  2. '>' != '>>'
  3. depending on the inital assumptions: is it the string 'Header' that segregate the records or is there some other record segregation logic
# 7  
Old 07-05-2005
Code:
awk 'BEGIN{of="file0.txt"}/^Header/{close(of);of="file"++i".txt";}{print>of}' file.txt

1. begin != BEGIN --- typo, Thank you!
2. '>' != '>>' --- it is right '>' != '>>', but using '>' is better than '>>' in this thread.
3. depending on the inital assumptions: is it the string 'Header' that segregate the records or is there some other record segregation logic --- agree, hope Jtrinh can talk more about the rule of the file.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Using sed in a loop/to remove lines contained in variable from file

I've tried numerous commands, but I am not sure how to use sed in a loop. This is what I have: VARZ contains CARD_FILE_LIST and it also contains CARD_FILE_LIST2 so echo "$VARZ" CARD_FILE_LIST CARD_FILE_LIST2 I have a file with 60 lines in /tmp/testfile it and I want those lines deleted... (3 Replies)
Discussion started by: newbie2010
3 Replies

2. Shell Programming and Scripting

ksh Loop through file one, remove lines from file two

Good Afternoon, I start with a file named biglist.txt. I have another file smallerlist. txt I want to remove the lines from smallerlist.txt from biglist.txt and leave those lines that do not reside in smallerlist.txt. Thanks !! (2 Replies)
Discussion started by: popeye
2 Replies

3. UNIX for Dummies Questions & Answers

Count the lines with the same values in a column and write the output to a file

Hey everyone! I have a tab delimited data set which I want to create an output contained the calculation of number of those lines with a certain value in 2nd and 3rd column. my input file is like this: ID1 1 10M AAATTTCCGG ID2 5 4M ACGT ID3 5 8M ACCTTGGA ID4 5 ... (7 Replies)
Discussion started by: @man
7 Replies

4. UNIX for Dummies Questions & Answers

Simple script to write new lines in a text file

Hello, I have a comma seperated data sheet with multiple fields of biological data. One column contains the ID name of the sample, where there could be more than one sample separated by a comma. I would like a script that reads this field, and for each sample ID, copies the entire line and writes... (18 Replies)
Discussion started by: torchij
18 Replies

5. UNIX for Dummies Questions & Answers

analyze lines in a file by loop

Hi Dears, I use the below code to analyze lines in a file: for line in `cat ucsv` do echo $line //analyze statements donehowever, if line contains space char, it will be broken. for example, if file content is: #login,full name,email,project,role,action gmwen,Bruce... (3 Replies)
Discussion started by: crest.boy
3 Replies

6. Shell Programming and Scripting

how to write multiple lines to a file using shell script?

I need to create an xml using shell script, but i first want to know how can i write multiple lines to file using shell script? (7 Replies)
Discussion started by: vel4ever
7 Replies

7. UNIX for Dummies Questions & Answers

Unable to write to a file within a loop

Hi All, Following is the program that i have written in cygwin. The redirection of the unfound $param1 to error.txt file doesnt work.Can any one help? #!/usr/bin/sh fname=$1 sed 's/ //g' "$fname" > fname1 while read i do echo $i > file1 #param1 is script name ... (1 Reply)
Discussion started by: janardhanamk
1 Replies

8. Shell Programming and Scripting

Push records to array during implicit loop and write to file

NEWBIE ALERT! Hi, I'm 1 month into learning Perl and done reading "Minimal Perl" by Tim Maher (which I enjoyed enoumously). I'm not a programmer by profession but want to use Perl to automate various tasks at my job. I have a problem (obviously) and are looking for your much appreciated help.... (0 Replies)
Discussion started by: jospan
0 Replies

9. Shell Programming and Scripting

trying to write a script to loop through a port info file

Below is part of a script i have written to loop through part of a port info file. How do i continue the script to get info for OS Device Name, manufacturer and then put information into an array? HBA Port WWN: 10000000c9420b4b OS Device Name: /dev/cfg/c10 Manufacturer: Emulex... (5 Replies)
Discussion started by: rcon1
5 Replies

10. UNIX for Dummies Questions & Answers

Loop through the lines in a file?

How do I loop through the lines of a file? Each line of the file will be the name of a server. Like: server1.stuff.com server2.stuff.com For each server I want to do a secure copy of the file to the other server. This will be a cron job so I guess it needs to run in just SH. I... (3 Replies)
Discussion started by: jimmy
3 Replies
Login or Register to Ask a Question

Featured Tech Videos