Find matched pattern and print all based on certain conditions
Hi,
I am trying to extract data based on certain conditions. My sample input file as below:-
I want to get an output where when all conditions are met, it should print every lines with the same name in $1. The conditions as follows:-
1) "tra_law" is found in $3 && the results of $5 - $4 (of tra_law) is > 200. It should print all the following lines associated with it.
2) Then, it should check for the room number in last column, where only room_number with min of 3 counts will be taken into consideration.
The output should be like below:-
as you can see, only lnc-1:3 met the conditions. for lnc-2:1, the tra_law value is less than 200 (688 - 500 = 180), therefore, it is omitted. As for lnc-9:1 and lnc-16:4, though the tra_law value > 200, both are omitted too as the room_number counts are less than 3.
I tried to use awk to work on it. My codes as below:-
I got the results of the conditions no 1. But, it did not print the following lines associated to it. Also, I do not know how to check for condition no 2. I would prefer for the condition no 2 to be put in separate awk command as I might need to use them separately in different situation. Tried it many times but failed. Appreciate your kind help. Thanks.
Last edited by bunny_merah19; 10-08-2019 at 07:47 AM..
Help me out: what does {NF--NF} do in your second awk script do? An uncommon construct, at least to me...
For your problem, how about
Hi RudyC,
Thanks so much...your codes work great on my real data.
If you notice, I created $20 to put in the total of $5 - $4. I need to remove $20 (last column) from being printed out in the final output. Therefore, i used {NF--NF} for that purpose. It was just my silly way I guess.
Well, yes, I noticed the necessary removal of $20. So NF-- would remove it (if it is the last field). What is the trailing NF for?
And, why $20 when your entire file has only 9 fields per line consistently?
And - as I see now - why the NR>2 condition? You normally use this to eliminate e.g. headers. But your file seems to have valid data in lines 1 and 2?
And, why $20 when your entire file has only 9 fields per line consistently?
-> My real data has more than that. The one that i put here just a sample. The real data quite long and messy
And - as I see now - why the NR>2 condition? You normally use this to eliminate e.g. headers. But your file seems to have valid data in lines 1 and 2?
-> I do have 2 lines header in my real data that need to be omitted.
Hi I want to print the line until pattern is matched.
I am using below code:
sed -n '1,/pattern / p' file
It is working fine for me , but its not working for exact match.
sed -n '1,/^LAC$/ p' file
Input:
LACC FEGHRA 0
LACC FACAF 0
LACC DARA 0
LACC TALAC 0
LAC ILACTC 0... (8 Replies)
Hi experts,
I have a file with regexes which is used for automatic searches on several files (40+ GB).
To do some postprocessing with the grep result I need the matching line as well as the match itself.
I know that the latter could be achieved with grep's -o option. But I'm not aware of a... (2 Replies)
Hello Friends,
I need to print lines in between two string when a keyword existed in those lines (keywords like exception, error, failed, not started etc).
for example,
input:
..
Begin Edr
ab12
ac13
ad14
bc23
exception occured
bd24
cd34
dd44
ee55
ff66
End Edr (2 Replies)
Hi,
I have script like below:
#!/usr/local/bin/perl
use strict;
use warnings;
while (<DATA>) {
( my ($s_id) = /^\d+\|(\d+?)\|/ ) ;
if ( $s_id == 1 ){
s/^(.*\|)*.*ABC\.pi=(+|+)*.*ABC\.id=(\d+|+).*$/$1$2|$3/s;
print "$1$2|$3\n"; (2 Replies)
Hi,
I need some help on how to print the whole data for unmatched pattern. i have 2 different files that need to be checked and print out the unmatched patterns into a new file. My sample data as follows:-
File1.txt
Id Num Activity Class Type
309 1.1 ... (5 Replies)
Hi all,
I have a text data file. My aim here is to find line called *FIELD* AV for every record and print lines after that till *FIELD* RF. But here I want first 3 to four lines for very record as well. FIELD AV is some where in between for very record. SO I am not sure how to retrieve lines in... (2 Replies)
I am working on a scraping project and I am stuck at this tiny grep pattern match.
Sample text :
FPA List. FPA List. FPA List. FPA List. FPA List. FPA List. FPA List. FPA List.
ABC Personal Planning
Catherine K. Wat
Cath Wat
Catherine K. Wat
Catherine K. Wat
IFRAME:... (8 Replies)
Hi,
If there exist multiple pattern in a file, how can I find the last record matching the pattern through perl.
The below script searches for the pattern everywhere in an input file.
#! /usr/bin/perl -s -wnl
BEGIN {
$pattern or
warn"Usage: $0 -pattern='RE' \n" and
exit 255;... (5 Replies)
I am really need help with the regular expression in SED. From input file, I need to extract lines that have the port number (sport or dport) as defined. The input file is something like this
time=1209515280-1209515340 dst=192.168.133.202 src=208.70.8.23 bytes=2472 proto=6 sport=80 dport=1447... (6 Replies)
Hi,
I want to know if you can input with sed but instead of specifing a line number like below I wan't to be able to insert based on a specific word or patttern.
10i\
Insert me after line 10
is this possible with sed or should I use AWK?
Thanks
Jack (2 Replies)