Visit Our UNIX and Linux User Community


Combine two awk statements into one


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Combine two awk statements into one
# 1  
Old 11-08-2011
Combine two awk statements into one

Hi,

I have the following two awk statements which I'd like to consolidate into one by piping the output from the first into the second awk statement (rather than having to write kat.txt out to a file and then reading back in).


Code:
awk 'BEGIN {FS=OFS=" "} {printf("%s ", $2);for (x=7; x<=10; x++) printf("%s ", $x);printf("\n"); }' plink.ped > kat.txt
awk 'NR==FNR {f1[$1] = $0; next} ($1 in f1) {print f1[$0]} ' kat.txt anmls_matched.txt > final.txt

Many thanks,
Kathryn
# 2  
Old 11-09-2011
Code:
awk 'NR==FNR{f1[$2]=$7 FS $8 FS $9 FS $0];next} $1 in f1 {print f1[$1]}' plink.ped  anmls_matched.txt  > final.txt

# 3  
Old 11-09-2011
Quote:
awk 'NR==FNR{f1[$2]=$7 FS $8 FS $9 FS $0];next} $1 in f1 {print f1[$1]}' plink.ped anmls_matched.txt > final.txt
About to post a similar approach when I saw yours go up. I think you have a typo (bold):

Code:
awk 'NR==FNR{f1[$2]= $2 FS $7 FS $8 FS $9 FS $10;next} $1 in f1 {print f1[$1]}'

And the way I read the original code $2 ends up in the output (red). Might be wrong my eyes are tired tonight.

Last edited by agama; 11-09-2011 at 01:38 AM.. Reason: clarity
This User Gave Thanks to agama For This Post:
# 4  
Old 11-09-2011
Code:
awk 'NR==FNR{f1[$2]=$7 FS $8 FS $9 FS $10;next} $1 in f1 {print $1,f1[$1]}' plink.ped  anmls_matched.txt

Thanks for the correction.
 

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl combine multiple map statements

I have a file like file. file.TODAY.THISYEAR file.TODAY.LASTYEARI want to substitute the words in caps with their actual values so that output should look like file.140805 file.140805.2014 file.140805.2013For this I am reading the file line bye line in an array and using multiple map... (1 Reply)
Discussion started by: sam05121988
1 Replies

2. Shell Programming and Scripting

awk with many if statements

Hi What is the right structure to use awk with multiple If statements The following code doesn't work # awk ' { A = $1 } END { for ( i = 1; i <= c; i++ ) { if ( A == 236 && A ==199... (7 Replies)
Discussion started by: khaled79
7 Replies

3. Shell Programming and Scripting

Combine 4 awk pattern count statements into 1

Hello fellow awkers, I am trying to combine the following awk statements into 1 so that the results are more accurate: awk '/\=\+/ { count++ } END { print count}' filename awk '/\=\?/ { count++ } END { print count}' filename awk '/\=\-/ { count++ } END { print count}' filename awk... (8 Replies)
Discussion started by: ux4me
8 Replies

4. Shell Programming and Scripting

Nested awk Statements

Hello again everyone, yes, I'm back again for more help! So I'm attempting to read two separate files and generate some XML code from that. My current code is: BEGIN { print "<?xml version=\"1.0\" encoding=\"utf-8\">" print "<Export>" } { x=1; print "<section name=\"Query" NR "\">"... (5 Replies)
Discussion started by: Parrakarry
5 Replies

5. Shell Programming and Scripting

awk problem - combining awk statements

i have a datafile that has several lines that look like this: 2,dataflow,Sun Mar 17 16:50:01 2013,1363539001,2990,excelsheet,660,mortar,660,4 using the following command: awk -F, '{$3=strftime("%a %b %d %T %Y,%s",$3)}1' OFS=, $DATAFILE | egrep -v "\-OLDISSUES," | ${AWK} "/${MONTH} ${DAY}... (7 Replies)
Discussion started by: SkySmart
7 Replies

6. Shell Programming and Scripting

simplify/combine if statements would be nice

below is something i inherited: if && && ; then HOST_SELECT="-m quadcore" fi if && && ; then HOST_SELECT="-m quadcore" fi if && && ; then HOST_SELECT="-m octocore1" fibelow is what i changed it to: if && && ; then HOST_SELECT="-m quadcore"... (2 Replies)
Discussion started by: crimso
2 Replies

7. UNIX for Dummies Questions & Answers

Struggling to combine two Greps statements

Greetings! I have been tasked to create a report off files we receive from our hardware suppliers. I need to grep these files for two fields 'Test_Version' and 'Model-Manufacturer' ; for each field, I need to capture their corresponding values. When running each statement separately, I get... (4 Replies)
Discussion started by: alan
4 Replies

8. Shell Programming and Scripting

Combine awk statements

I have an awk statement that works but I am calling awk twice and I know there has to be a way to combine the two statements into one. The purpose is to pull out just the ip address from loopback1. cat config.txt | nawk 'BEGIN {FS="\n"}{RS="!"}{if ( $0 ~ "interface loopback1" ) print$4}' | nawk... (5 Replies)
Discussion started by: numele
5 Replies

9. Shell Programming and Scripting

combine two grep statements

Hi I am wondering is it possible to combine two greps together I have two greps. grep "^,, *\." file (grep the line which has a '.' in the third column) grep "=" file (grep the line which has = anywhere) How to put them together so that if the content of the file that match either... (1 Reply)
Discussion started by: tiger66
1 Replies

10. UNIX for Dummies Questions & Answers

How to combine case statements

Hi, I need to change military time to regular time. I know to use case to indicate whether a.m. or p.m. as follows: case "$hour" in 0? | 1 ) echo a.m.;; 1 ) echo p.m.;; * ) echo p.m.;; esac My question is how do I add the hour and minute... (2 Replies)
Discussion started by: karp3158
2 Replies

Featured Tech Videos