Visit Our UNIX and Linux User Community


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-05-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-05-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-05-2005 at 12:55 AM..
# 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.

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

Featured Tech Videos