Extract numbers from output file and compare to value


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Extract numbers from output file and compare to value
# 1  
Old 01-19-2018
Extract numbers from output file and compare to value

Hi,

I developed a script which finally originates a similar output:

Code:
net0:up,Tx=475198bps,Rx=31009bps net1:up,Tx=39596bps,Rx=35678bps

Of course the figures change and also the amount of interfaces (ex: could be more then net0 and net1). This is done automatically.

The next step i'm trying to achieve is to extract these figures and compare them with a value. if the figures are larger then the value then i originate an output like:

Code:
net0 Tx is higher then the threshold

However i cannot understand how to make the script intelligent enough to output which receive is (transmit OR receive is higher then the threshold specified AND also which interface or interfaces

I tried to use the for loop like:

Code:
TX=`sed 's/:up//g' test.txt | sed 's/bps//g' | awk -F',' '{print$2}' | cut -c4-`
RX=`sed 's/:up//g' test.txt | sed 's/bps//g' | awk -F',' '{print$3}' | cut -c4-`

for tx in $TX
do
if [[ $tx -gt 9 ]]; then
INT=`grep $tx test.txt | awk -F',' '{print$1}' | cut -f1 -d":"`
echo -n "$INT tx is higher then usual "
fi
done

for rx in $RX
do
if [[ $rx -ge 0 ]]; then
INT=`grep $rx test.txt | awk -F',' '{print$1}' | cut -f1 -d":"`
echo -n "$INT rx is higher then usual "
fi
done

But with this scenario i cannot make an efficient output that i might know that for example both Tx/Rx are high or one of the interfaces has a high Tx.
What i'm trying to achieve is an output similar to this:

Code:
The following interfaces has high Tx usage: net0

Code:
The following interfaces has both high Tx/Rx usage: net0 net1

The script developed is in bash.

Could you kindly give me some hints?

Rgds,

Matthew
# 2  
Old 01-19-2018
Hello Matthew, you could do something like:
Code:
read -a intf < test.txt
for ((i=0; i<${#intf[@]}; i++))
do
  IFS=',:=' read ifname status x tx x rx <<< "${intf[i]}"
  echo "This is interface ${ifname} with status ${status} and rx ${rx%bps} and tx ${tx%bps}"
done

Which should give you the freedom to add if statements in the loop
These 2 Users Gave Thanks to Scrutinizer For This Post:
# 3  
Old 01-19-2018
Code:
sed 's/net/\nnet/g' test.txt | awk '
/^net.*:.*Tx *=.*Rx *=/ {
   tx=$0;
   sub(".*Tx= *", "", tx);
   sub("[^0-9].*", "", tx);
   rx=$0;
   sub(".*Rx= *", "", rx);
   sub("[^0-9].*", "", rx);
   net=$0;
   sub(" *:.*", "", net);
   if (tx > tx_max) txs=txs net " ";
   if (rx > rx_max) rxs=rxs net " ";
   if (rx > rx_max && tx > tx_max) rxtx=rxtx net " ";
}
END {
      print "The following interfaces have high Tx usage:", txs
      print "The following interfaces have high Rx usage:", rxs
      print "The following interfaces have both high Tx/Rx usage:", rxtx
}
' tx_max=9 rx_max=0

This User Gave Thanks to rdrtx1 For This Post:
# 4  
Old 01-19-2018
I like the shell solution in post#2, it is also a bit closer to the attempt in post#1.
Looping over the values is somewhat simpler than over the indexes
Code:
read -a intf < test.txt
for i in "${intf[@]}"
do
  IFS=',:=' read ifname status _ tx _ rx <<< "$i"
  # strip from the end up to a non-digit: % or bps or .0 or .0%
  echo "This is interface ${ifname} with status ${status} and rx ${rx%%[!0-9]*} and tx ${tx%%[!0-9]*}"
done

This User Gave Thanks to MadeInGermany For This Post:
# 5  
Old 01-22-2018
Thank you for your replies. I will have a go at your codes code and let you know!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Extract numbers from file name-how to ?

Hello friends,I am new to Unix programming. how do I achieve the following in Unix shell script (I am running ksh on AIX) extract the number from name of file? My file format is like "LongFileName-1234.020614-221030.txt" now I want to extract value which is between (-) hyphen and (.) dot... (4 Replies)
Discussion started by: f150
4 Replies

2. UNIX for Dummies Questions & Answers

Extract Numbers from a log file

Hi, I am trying to grep/extract the number list from this log file, can I get some help on this. I can grep the word 'href' to see the numbers, but it is resulting with the complete line. Content of my file: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <html> <head>... (4 Replies)
Discussion started by: Sajjadmehdi
4 Replies

3. UNIX for Dummies Questions & Answers

Compare two column in file and extract complate line

No Chr Pos Qual GT_1 GT_2 1. chr1 478493 595 A/G G/G 2. chr1 879243 700 A/T T/T 3. chr2 889922 1300 C/C C/C 4. chr2 1926372 300 T/A T/A 5. chr3 237474 500 G/C C/C 6. chr3 575757 700 ... (2 Replies)
Discussion started by: mscott
2 Replies

4. Shell Programming and Scripting

compare 2 files and extract the data which is not present in other file with condition

I have 2 files whose data's are as follows : fileA 00 lieferungen 00 attractiop 01 done 02 forness 03 rasp 04 alwaysisng 04 funny 05 done1 fileB alwayssng dkhf fdgdfg dfgdg sdjkgkdfjg funny rasp (7 Replies)
Discussion started by: rajniman
7 Replies

5. Shell Programming and Scripting

Extract rows from file based on row numbers stored in another file

Hi All, I have a file which is like this: rows.dat 1 2 3 4 5 6 3 4 5 6 7 8 7 8 9 0 4 3 2 3 4 5 6 7 1 2 3 4 5 6 I have another file with numbers like these (numbers.txt): 1 3 4 5 I want to read numbers.txt file line by line. The extract the row from rows.dat based on the... (3 Replies)
Discussion started by: shoaibjameel123
3 Replies

6. Shell Programming and Scripting

Need help please with Grep/Sed command to extract text and numbers from a file

Hello All, I need to extract lines from a file that contains ALPHANUMERIC and the length of Alphanumeric is set to 16. I have pasted the sample of the lines from the text file that I have created. My problem is that sometimes 16 appears in other part of the line. I'm only interested to... (14 Replies)
Discussion started by: mnassiri
14 Replies

7. UNIX for Dummies Questions & Answers

Extract numbers from .txt file

I need to extract all the p-value numbers and the rho numbers from a .txt file and write them as coma separated values in a new file. Ideally I would get two files in the end, one for p- values and one for rho. Any suggestions? I appreciate your help!!! The .txt file looks essentially like this... (5 Replies)
Discussion started by: eggali
5 Replies

8. Shell Programming and Scripting

Extract numbers from text file work out average

Just wondering if someone could assist me with shell script I'm trying to write. I need to read the final column of a text file (shown below) and workout what the average number is. The text file will have a variable number of lines, I just want the script to pull out the values in the final field... (14 Replies)
Discussion started by: rich@ardz
14 Replies

9. Shell Programming and Scripting

read numbers from file and output which numbers belongs to which range

Howdy experts, We have some ranges of number which belongs to particual group as below. GroupNo StartRange EndRange Group0125 935300 935399 Group2006 935400 935476 937430 937459 Group0324 935477 935549 ... (6 Replies)
Discussion started by: thepurple
6 Replies

10. Shell Programming and Scripting

I need to extract last column of a file and compare the values

Hi, I am new to unix and I need help in solving below mentioned issue, really appreciate ur help. I have a file sam, john, 2324, 07142007 tom, thomson, 2343, 07142007 john, scott, 2478, 07142007 its a comma delimited file, I need to extract the last column from each line and this... (4 Replies)
Discussion started by: vukkusila
4 Replies
Login or Register to Ask a Question