How do you tell awk to use different files?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How do you tell awk to use different files?
# 1  
Old 04-22-2013
How do you tell awk to use different files?

Hi everyone,

How can you tell awk to switch the input file at a given point in the program when you you have multiple file inputs? I always assumed that if you divided your code into blocks, awk would understand that the first block contains instructions for file1, the second block contains instructions for the second file...

For example:
{
//Instructions executed for file1
}
{
//Instructions executed for file2
}

Clearly, when running the program, that does not work. Can anyone please explain?

Thank you. Smilie
# 2  
Old 04-23-2013
Quote:
the first block contains instructions for file1, the
second block contains instructions for the second file
As you suggest, it definitely does not work that way. Instead, it read the first file, then the second file, etc. and applies all blocks as each line is read. And you can have as many blocks as you want, has nothing to do with number of files.

getline is one way to read from different files, and perhaps accomplish what you want.
This User Gave Thanks to hanson44 For This Post:
# 3  
Old 04-23-2013
Code:
FILENENAME=="file1" {
//Instructions executed for file1
next
}
{
//Instructions executed for file2
}

These 2 Users Gave Thanks to MadeInGermany For This Post:
# 4  
Old 04-23-2013
Thank you very much to everyone! I really appreciate it.

---------- Post updated at 06:55 PM ---------- Previous update was at 06:36 PM ----------

It works very well, but I was wondering: if I need to run the program with several pairs of files, instead of rewriting the code before each run, can I use variables?

Thank you!
# 5  
Old 04-23-2013
If you just have two files, you can use the following:
Code:
FNR==NR{//Instructions executed for file1
        next
}
{       //Instructions executed for file2
}

This User Gave Thanks to Don Cragun For This Post:
# 6  
Old 04-24-2013
Code:
awk  'FNR==1  {file++}
      file==1 {Instructions executed for file1;  next }
      file==2 {Instructions executed for file2;  next }
      file==3 {Instructions executed for file3;  next }
... etc ...

This User Gave Thanks to RudiC For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk command to compare a file with set of files in a directory using 'awk'

Hi, I have a situation to compare one file, say file1.txt with a set of files in directory.The directory contains more than 100 files. To be more precise, the requirement is to compare the first field of file1.txt with the first field in all the files in the directory.The files in the... (10 Replies)
Discussion started by: anandek
10 Replies

2. Shell Programming and Scripting

awk, multiple files input and multiple files output

Hi! I'm new in awk and I need some help. I have a folder with a lot of files and I need that awk do something in each file and print a new file with the output. The input file name should be modified when I print the outpu files. Thanks in advance for help! :-) ciao (5 Replies)
Discussion started by: gabrysfe
5 Replies

3. Shell Programming and Scripting

Comparing the matches in two files using awk when both files have their own field separators

I've two files with data like below: file1.txt: AAA,Apples,123 BBB,Bananas,124 CCC,Carrot,125 file2.txt: Store1|AAA|123|11 Store2|BBB|124|23 Store3|CCC|125|57 Store4|DDD|126|38 So,the field separator in file1.txt is a comma and in file2.txt,it is | Now,the output should be... (2 Replies)
Discussion started by: asyed
2 Replies

4. Shell Programming and Scripting

Apply 'awk' to all files in a directory or individual files from a command line

Hi All, I am using the awk command to replace ',' by '\t' (tabs) in a csv file. I would like to apply this to all .csv files in a directory and create .txt files with the tabs. How would I do this in a script? I have the following script called "csvtabs": awk 'BEGIN { FS... (4 Replies)
Discussion started by: ScKaSx
4 Replies

5. UNIX for Dummies Questions & Answers

Using AWK: Extract data from multiple files and output to multiple new files

Hi, I'd like to process multiple files. For example: file1.txt file2.txt file3.txt Each file contains several lines of data. I want to extract a piece of data and output it to a new file. file1.txt ----> newfile1.txt file2.txt ----> newfile2.txt file3.txt ----> newfile3.txt Here is... (3 Replies)
Discussion started by: Liverpaul09
3 Replies

6. Shell Programming and Scripting

Comparison and editing of files using awk.(And also a possible bug in awk for loop?)

I have two files which I would like to compare and then manipulate in a way. File1: pictures.txt 1.1 1.3 dance.txt 1.2 1.4 treehouse.txt 1.3 1.5 File2: pictures.txt 1.5 ref2313 1.4 ref2345 1.3 ref5432 1.2 ref4244 dance.txt 1.6 ref2342 1.5 ref2352 1.4 ref0695 1.3 ref5738 1.2... (1 Reply)
Discussion started by: linuxkid
1 Replies

7. Shell Programming and Scripting

Awk : too many files 10

Hi, I m trying to split the one file into small segments based on userid field.I m getting the error "AWK : too many output files 10 record number 71". Can any one help me to resolve this issue or provide me someother code? Please note that, I don't have root admin previlege. I m login... (12 Replies)
Discussion started by: prabuk1
12 Replies

8. UNIX for Dummies Questions & Answers

Using Awk within awk to read all files in directory

I am wondering if anyone has any idea how to use an awk within awk to read files and find a match which adds to count. Say I am searching how many times the word crap appears in each files within a directory. How would i do that from the command prompt ... thanks (6 Replies)
Discussion started by: flevongo
6 Replies

9. Shell Programming and Scripting

Merge files of differrent size with one field common in both files using awk

hi, i am facing a problem in merging two files using awk, the problem is as stated below, file1: A|B|C|D|E|F|G|H|I|1 M|N|O|P|Q|R|S|T|U|2 AA|BB|CC|DD|EE|FF|GG|HH|II|1 .... .... .... file2 : 1|Mn|op|qr (2 Replies)
Discussion started by: shashi1982
2 Replies

10. Shell Programming and Scripting

Splitting input files into multiple files through AWK command

Hi, I needs to split *.txt files from single directory depends on the some mutltiple input values. i have wrote the code like below for file in *.txt do grep -i -h "value1|value2" $file > $file; done. My requirment is more input values needs to be given in grep; let us say 50... (3 Replies)
Discussion started by: arund_01
3 Replies
Login or Register to Ask a Question