Isnt this a simple case of else if ? Loop would be better of course if i runs from 1 to 13, but for checking specific columns it may be better to use else if .
Code:
awk 'NR==FNR{array[$1]=$2;next}
{ if ( $1 in array ) { $5=array[$1]}
else if ($2 in array) { $5=array[$2] }
else if ($3 in array) { $5=array[$3] }1' file1 file2
Yes, if...
If we knew what was really wanted we could all make better suggestions. When we're just given a pattern of three consecutive fields being checked and a statement that 13 fields will be checked, we have to guess at what should be done. With consecutive fields, a loop is probably better; with non-consecutive fields an if-else ladder or a loop over an array listing the fields to be tested will be needed. If the 13 field numbers are fixed but not consecutive, an if-else ladder will be faster. If the fields to be tested vary from invocation to invocation, creating an array of fields to be evaluated is a lot easier to set up the code in a BEGIN clause from command line or file input than rewriting an if-else ladder on the fly.
That is why threads are much shorter and suggestions are much better and usually arrive quicker when the requirements are carefully and clearly specified in the 1st post in a thread.
Hello,
Can you explain why in the first 2 commands the awk does not print anything? Is it looking of a specific format ?
Thanks.
$ echo 12a3 | awk '($1>=2) {print $1}' # prints nothing
$ echo 123a | awk '($1>=2) {print $1}' # prints nothing
$ echo a123 | awk '($1>=2) {print $1}'
a123... (1 Reply)
I do not know how to do this unless I use a bunch of if statements. I need a script to replace numbers in each record in a file. I am really getting tangled in this web.
If a fieldA (19 positions) is greater than 14 digits, I have to change the data (resulting fieldA is fixed 19 postions).
If... (5 Replies)
how can i specify more than 1 consition in the following AWK statament??
i.e. if $2 is ABCD and $3 is MNOP and $4 is KLPM
similarly for OR
#!/bin/ksh
awk -F '' ' $2 == "ABCD" { print $2, $3;}' file.xml (2 Replies)
Hi Everyone,
# cat 1
1;2;3;4;5;6
1;2;3;4;5;
# awk -F ";" '$5 == "5"' 1
1;2;3;4;5;6
1;2;3;4;5;
but the output is should be just "1;2;3;4;5;6" means 1st condition: $5 is 5; 2nd condition: $6 is not empty, please advice. Thanks (2 Replies)
Hi there,
I wanna define a variable 'tempbase'. Therefore I read a text file "base.out". "base.out" contains a list with four columns. 'tempbase' is the 4th entry in the line, where the first entry is equal to the predefined variable $orb1 and the second entry is equal to $orb2. I wrote the code... (2 Replies)
Hi there, here is my command
ssh host.local "/path/to/my/perscript/hostconfig.pl -s $HOST -d |awk '{if (\$4 > 120)print \"My error message\";exit}{s=0; for (i=1; i<=NF; i++) s++; if(s == 13) print \$3}'"
The problem is if conditional 1 is met (i.e $4 > 120), i don't see "My error message", the... (5 Replies)
Hi All,
I have a file with below contents.
"en2"/10.185.81.0:cluster_interconnect,"en5"/10.185.81.0:cluster_interconnect,"en6"/169.181.146.0:public
I want to take the interface name from the file and convert it as ipaddress using ifconfig command get the output like below
en6 ->... (2 Replies)
I'm having a problem pulling UID's from data. The data outputs a user's UID in one of three ways:
1. Error User user_name already assigned with <UID>
2. Success <UID> reserved for user_name
3. <a load of crap because there was a db failure yet somehow the UID is still in there>
I typically... (5 Replies)
Hello Friends,
I need to find some CDRs in production servers whose 1st field value and 2nd field value = 1 and 11th looks like 45.123... where there are more than 3 digits after comma.so i wrote a one liner, something like below but does not work, however when i used first and second conditions... (8 Replies)
FORMS(3) BSD Library Functions Manual FORMS(3)NAME
field_count, form_fields, move_field, set_form_fields -- form library
LIBRARY
Curses Form Library (libform, -lform)
SYNOPSIS
#include <form.h>
int
field_count(FORM *form);
FIELD **
form_fields(FORM *form);
int
move_field(FIELD *field, int frow, int fcol);
int
set_form_fields(FORM *form, FIELD **fields);
DESCRIPTION
The field_count() function returns the number of fields that are attached to the given form, if the form argument passed is NULL then
field_count() will return -1. The function form_fields() will return a pointer to array of attach fields for the given form, this array is
not NULL terminated, fields may be attached to the given form by calling set_form_fields(). The fields argument in this function is a
pointer to a NULL terminated array of fields that will be attached to the form. If there are already fields attached to the form then they
will be detached before the new fields are attached. The new fields given must not be attached to any other form. The move_field() function
will move the given field to the location specified by frow and fcol.
RETURN VALUES
Functions returning pointers will return NULL if an error is detected. The functions that return an int will return one of the following
error values:
E_OK The function was successful.
E_CONNECTED The field is connected to a form.
E_POSTED The form is currently posted to the screen.
E_BAD_ARGUMENT The function was passed a bad argument.
SEE ALSO curses(3), forms(3)NOTES
The header <form.h> automatically includes both <curses.h> and <eti.h>.
BSD January 1, 2001 BSD