Visit Our UNIX and Linux User Community

Awk FNR==NR question

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Awk FNR==NR question
# 1  
Old 06-19-2012
Awk FNR==NR question

awk -F'[ =]' 'FNR==NR {a[$1]=$2; next} {$1=a[$1]} 1' $useralias ${entries} >> ${entries}_2

Is there anyway to alter this command so that if it does not find a match it will just leave the line alone instead of replacing what it doesn't find with a blank space?
# 2  
Old 06-19-2012
awk -F'[ =]' 'FNR==NR {a[$1]=$2; next} $1 in a{$1=a[$1]} 1' $useralias ${entries} >> ${entries}_2

This User Gave Thanks to Scrutinizer For This Post:
# 3  
Old 06-19-2012
Yep, that seems to of done it alright... Many thanks for your help..


Actually one more thing.. $1 is referencing a command like the following
/opt/Tivoli/lcf/dat/1/ stop
When I do the following awk command on a file for that line
awk -F= ' { print $2 } ' SUN_jd26_vintella.sudoers_cmndalias

I get that full line above which is what I want but if I run that
awk -F'[ =]' 'FNR==NR {a[$1]=$2; next} $1 in a{$1=a[$1]} 1' $useralias ${entries} >> ${entries}_2

it cuts off the stop part..

Not sure why

EDIT 2**
Meh, got it working by using the below..

awk -F'[ =]' 'FNR==NR {a[$1]=$2 " " $3; next} $1 in a{$1=a[$1]} 1' $useralias ${entries} >> ${entries}_2

Last edited by Jazmania; 06-19-2012 at 07:58 AM..
# 4  
Old 06-28-2012
Apologies for the double post here...

Is there a way though to anchor whats being replaced.. For example I'm replacing an alias called IBM with what it matches in the $cmdfile but its also replacing anything in the file with that contains IBM as part of its string..

awk -F'[ =]' 'FNR==NR {a[$1]=$2; next} $4 in a{$4=a[$4]} 1' $cmdalias ${entries} >> ${entries}_2

# 5  
Old 06-28-2012
Could you give an example of input and desired output?

Previous Thread | Next Thread
Test Your Knowledge in Computers #229
Difficulty: Easy
According to NetMarketShare, in September 2019 Linux had a 2% global market share of the desktop / laptop computer market.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Awk: Assigning a variable to be the value of FNR at a certain line

Sorry for the probably strangely worded title but I don't really know how else to put it. Background context: Post processing LAMMPS simulation data. tl;dr: I'm making two spheres collide, every defined timestep the simulation outputs a bunch of data including total energy of the particles,... (10 Replies)
Discussion started by: ThomasP
10 Replies

2. Shell Programming and Scripting

Explanation of FNR in this awk script

To merge mutiple *.tab files as: rs1 A A rs2 A A rs3 C C rs4 C Cfile2.ind rs1 T T rs2 T T rs3 G G rs4 G Gand rs1 B B rs2 B B rs3 L L rs4 L LOutput: AA TT BB AA TT BB CC GG LL CC GG ... (4 Replies)
Discussion started by: yifangt
4 Replies

3. Shell Programming and Scripting

awk --> selective printout with FNR

Hi everybody! need some awk-support. i want a line-selective printout of a file. wat i normally will do with ... awk ' FNR==8' sample.txt But now i need the data from line 8, 10 and the following data from line13 to 250 wich is not end of the file. I tried allready to combine it but without... (2 Replies)
Discussion started by: IMPe
2 Replies

4. Shell Programming and Scripting

Tip: alternative for NR==FNR in awk

Example: $ cat file1 2 3$ cat file2 1 2 3 4 5 6The following awk script works like a charm, NR==FNR is true for file1, the remainder runs for file2: awk ' NR==FNR {A; next} ($1 in A) ' file1 file2 2 3Now have an empty file1: >file1and run the awk script again. The result is empty... (8 Replies)
Discussion started by: MadeInGermany
8 Replies

5. Shell Programming and Scripting

How to use NA and FNR?

Hi i have file1: conn=232257 client=16218.19488.218.86:51237 protocol=LDAP file2: conn=232257 dn="uid=apple,ou=xxxx,ou=usfgfhfers,dc=example,dc=com" conn=232370 dn="uid=ball,ou=yyyyyy,ou=usfhfhfhers,dc=example,dc=com" In the output file it should match first column from above both files... (2 Replies)
Discussion started by: buzzme
2 Replies

6. UNIX for Dummies Questions & Answers

awk NR==FNR output control

Hi Guys, I have two files: f1: A B C D E F G H f2: A X Y Z f1 has 48000 lines, and f2 has 68. I have been matching f1 $3 to f2 $1, and getting f3: A A B C D E F G I would like f3 too look like this: A X Y Z A B C D E F G (2 Replies)
Discussion started by: heecha
2 Replies

7. UNIX for Dummies Questions & Answers

Multiple Column print after lookup using NR==FNR (awk)

foo.txt FAMID IID AFF SEX Group AgeCat Dis1 Dis2 Dis3 Dis4 Dis5 Dis6 Dis6 AMD0001 Mayo_49542 1 2 AMD 8 1 1 1 1 1 1 1 AMD0002 Mayo_49606 1 1 AMD 3 1 1 1 1 ... (7 Replies)
Discussion started by: genehunter
7 Replies

8. Shell Programming and Scripting

error "awk: (FILENAME=- FNR=23) fatal: division by zero attempted"

Hi , I have file : after i run this command : there are error can we print blank line if output error ?? thanks.. ^^ (4 Replies)
Discussion started by: justbow
4 Replies

9. Shell Programming and Scripting

awk NR==FNR compare 2 files produce a 3rd

hi, i have two files, both with 3 columns, the 3rd column has common values between the two files and i want to produce a 3rd file with 4 columns. file 1 a, ,b c file 2 a, b ,d I want to compare the 3rd value and if a match print to file 3 with the 3 columns from the first file... (11 Replies)
Discussion started by: borderblaster
11 Replies

10. Shell Programming and Scripting

Awk: different between NR and FNR

As I know: FNR: The ordinal number of the current record in the current file. NR: The ordinal number of the current record from the start of input. I don't understand really differency between NR and FNR. Who can explain it for me? And give me an example. Thanks (1 Reply)
Discussion started by: anhtt
1 Replies

Featured Tech Videos