Split a file using awk command.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Split a file using awk command.
# 1  
Old 04-04-2012
Question Split a file using awk command.

Code:
awk 'FNR == 1 { c = 1 } { print > (f c) } !FNR%n { close(f c); ++c }' n=$files_per_stream f=$input_path/filename_ $input_file


$input_file with some records are splitted into files named filename_1,filename_2...etc according to $files_per_stream.

Plz help me know how and if anyone has better option plz let me know ??

thnx in advance.

Moderator's Comments:
Mod Comment Please use code tags!

Last edited by zaxxon; 04-04-2012 at 10:04 AM.. Reason: code tags, see PM
# 2  
Old 04-04-2012
Perhaps try the split command.
This User Gave Thanks to Ygor For This Post:
# 3  
Old 04-04-2012
but how this awk command is working..
plz help me out.

thnx.
# 4  
Old 04-04-2012
FNR == 1 { c = 1 } - For the first record in each input file, set c to 1.
{ print > (f c) } - For all records, write the current record to file (f and c concatenated, e.g. $input_path/filename_1)
!FNR%n { close(f c); ++c }' - if the current record number is exactly divisible by n, close the current output file and increment variable c.
n=$files_per_stream f=$input_path/filename_ $input_file - set variables & input file.
# 5  
Old 04-04-2012
thanks CarloM but i still have some doubts...

1.) untill current record number is exactly divisible by n ,the filename_1 will be appended ????
This is an implicit behaviour of awk or what part of code code this ??

2.) what is "!" used for ?????
# 6  
Old 04-04-2012
@guptam: I don't understand, did you find this code somewhere, how did you come across this? What are your requirements, what did you try yourself?
# 7  
Old 04-04-2012
1. Yes.
Which behaviour do you mean? The second statement explicitly writes to the named file, and the third one explicitly checks FNR & changes the variable used to generate the filename.
2. Not/negate - if FNR%n is FALSE or zero, !FNR%n is TRUE.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

awk command to split pipe delimited file

Hello, I need to split a pipe de-limited file based on the COLUMN 7 value . If the column value changes I need to split the file Source File Payment|ID|DATE|TIME|CONTROLNUMBER|NUMBER|NAME|INDICATOR 42156974|1137937|10/1/2018|104440|4232|2054391|CARE|1... (9 Replies)
Discussion started by: rosebud123
9 Replies

2. Shell Programming and Scripting

awk split and awk calculation in the same command

I am trying to run the awk below. My question is when I split the input, then run anotherawk to perform a calculation using that splitas the input there are no issues. When I try to combine them the output is not correct, is the split not working or did I do it wrong? Thank you :). input ... (8 Replies)
Discussion started by: cmccabe
8 Replies

3. Shell Programming and Scripting

awk split command to get the desired result

Dear all, I am using the awk 'split' command to get the particular value. FILE=InputFile_009_0.txt Temp=$(echo $FILE | awk '{split($FILE, a, "e_"); print a}') I would like to have the Temp take the value as : _009_0 ... (4 Replies)
Discussion started by: emily
4 Replies

4. Shell Programming and Scripting

awk file split

Hi all, First of all I' like to mention that I'm pretty new to unix scripting. :( I'm trying to split an large xml with awk and rename it based on the values of two attributes. Example XML <RECORD> <element1>11</element1> <element2>22</element2> <element3>33</element3>... (18 Replies)
Discussion started by: f0usk4s
18 Replies

5. Shell Programming and Scripting

Want to split awk command

Hi, There is an awk command in script and it is running successfully. I want to split that command in 2 lines. I have tried using '\' but its not working.. Please suggest me the solution. (11 Replies)
Discussion started by: Sanket Dalvi
11 Replies

6. Shell Programming and Scripting

using awk in perl with split command

Hi, I have an array with following data. First field shows the owner and second is unique name. Now i have to pic the latest value with respect to the date in case of duplicate. like "def" is from two owners "rahul/vineet", now i want the latest from the two and the owner name also for all the... (9 Replies)
Discussion started by: vineet.dhingra
9 Replies

7. Shell Programming and Scripting

Split File by Pattern with File Names in Source File... Awk?

Hi all, I'm pretty new to Shell scripting and I need some help to split a source text file into multiple files. The source has a row with pattern where the file needs to be split, and the pattern row also contains the file name of the destination for that specific piece. Here is an example: ... (2 Replies)
Discussion started by: cul8er
2 Replies

8. Shell Programming and Scripting

Awk command to split file name

Hi I have few files with format access.2Nov-12:15AM. These files will be generated daily . I need to write a script so that if today's date is less than 10 then it has to zip the file and rename it to acess.02Nov-12:15AM.gz .please help me in this . Also please help me in splitting the file... (10 Replies)
Discussion started by: mskalyani9
10 Replies

9. UNIX for Dummies Questions & Answers

Split a file with no pattern -- Split, Csplit, Awk

I have gone through all the threads in the forum and tested out different things. I am trying to split a 3GB file into multiple files. Some files are even larger than this. For example: split -l 3000000 filename.txt This is very slow and it splits the file with 3 million records in each... (10 Replies)
Discussion started by: madhunk
10 Replies

10. Shell Programming and Scripting

awk command to split in to 2 files

Hi, I have a problem in grepping a file for 2 strings and writing them to 2 appropriate files. I need to use the awk command and read the file only once and write to the appropriate file. My file is very huge in size and it is taking a long time using cat command and grep command. Can anyone... (3 Replies)
Discussion started by: m_subra_mani
3 Replies
Login or Register to Ask a Question