input:
I am trying to append a "*" field to the record containing "Ref" in $1, only if the previous $1 with a common $2 have a value <4.
ouput:
The first subgroup ("Bob") shows $1 with only values <4, so a "*" is appended at the record "Ref".
The second subgroup ("Rick") shows one value >4 and is thus unchanged.
I read a couple of tutorials dealing with control-break programs, but they are all for counting (which is not my goal).
If someone could put me on track :-)
My attempt so far:
Last edited by beca123456; 01-19-2015 at 02:19 AM..
However, I don't get it. What is the point of using FNR=NR if the two input files are the same?
Usually we use this trick when 2 files are different for comparing them, no?
As per your request each 1st field with respect to 2nd field should be less than 4, so I have taken field 2 as index and added all it's first fields(Assuming as per given data like there will be only 2 fields with values and one will be for ref) and if sum is less than 8 means we are good to add * at end else don't do anything. Now about your query to give Input_file 2 times, in awk we can read multiple files(same like we can multiple arguments to a script). It will read files one by one. Here I want to mention I have put condition FNR==NR this condition will be true only when first file will be read as FNR value will be reset to one each time it goes to read next file but NR value will be keep on increasing even file name is changed, so it will like as follows.
Notice the highlighted ones for FNR values. I hope this helps, if you have any query kindly do let me know, will try to solve.
Sorry, it doesn't work actually ! I didn't explain clearly at first.
Let's say we have this input instead:
The output should be the same as before:
But with your formula I got the second ref record tagged as well:
I am not trying to sum any value. The numbers are just tags.
Looking at the input file, we have 2 groups:
- the "Bob" group (record 1, 2, and 3)
- the "Rick" group (record 4, 5, and 6)
For each group, if ALL the $1 values (assessed individually) are <4, then the record with $1=Ref should be appended a "*" sign (like for the "Bob" group).
To the contrary, if at least one $1 value of a same group is >4, then all the record from this group should be unchanged (including the Ref record).
Sorry for confusion, could you please try this following with same concept and little editing with conditions.
Let's say we have 2 senarios as follows.
2nd senario:
EDIT: Adding a non oneliner solution for same.
Thanks,
R. Singh
Last edited by RavinderSingh13; 01-19-2015 at 06:30 AM..
Reason: Added a non oneliner form + added a few lines with spaces now
Using your code:
input:
output:
I should get:
Let's me explain again with another example:
Here we have 3 groups "Bob", "Rick" and "Paul'.
* 1st group:
1st record, value of $1 is 1 (i.e. <4)
2nd record, value of $1 is 3 (i.e. <4)
=> as all $1 are <4, we can add "*" at the last record of the group (the one starting with Ref)
* 2nd group:
1st record of this group, value of $1 is 2 (i.e. <4)
2nd record of this group, value of $1 is 5 (i.e >4)
=> at least one value of the group is >4, the last record of the group (the one starting with Ref), must remain unchanged (no matter the value of $1 in the 3rd record of the group)
* 3rd group:
1st record of this group, value of $1 is 7 (i.e. >4)
=> the last record of the group (the one starting with Ref), must remain unchanged.
Hello.
System : opensuse leap 42.3
I have a bash script that build a text file.
I would like the last command doing :
print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt
where :
print_cmd ::= some printing... (1 Reply)
Hi,
thanks to a precedent post, and thanks to the reply of derekludwig of the forum, I have convert my first awk command as :
test.txt is : AAAAAGHIJKLAjKMEFJKLjklABCDJkLEFGHIJKL
awk -f findstring.awk test.txt > textreturn.txtfindstring.awk is :
BEGIN{ SLENGTH = 3 }
{
... (3 Replies)
A vast amount of problems asked in "Shell Programming an Scripting" can be traced back to be an application of a basic algorithm called a Control Break. Every programmer - and script writers are programmers nonetheless - should immediately recognize problems of this sort and know how to deal with... (1 Reply)
logs:
"/home/abc/public_html/index.php"
"/home/abc/public_html/index.php"
"/home/xyz/public_html/index.php"
"/home/xyz/public_html/index.php"
"/home/xyz/public_html/index.php"
how to use "cut" or "awk" or "sed" to get the following result:
abc
abc
xyz
xyz
xyz (8 Replies)
Hi,
I have line in input file as below:
3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL
My expected output for line in the file must be :
"1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL"
Can someone... (7 Replies)
hi,
i have a file having datas like that
./a.txt
12344
12345
12346
12347
.....
.....
...
i want to save this datas to another file like that
./b.txt
12344 12345 12346 12347 ... ... ...
i think awk can make this but how? :) waiting for ur help. (3 Replies)
Hi Friends,
Can any of you explain me about the below line of code?
mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`
Im not able to understand, what exactly it is doing :confused:
Any help would be useful for me.
Lokesha (4 Replies)