match pattern 1 and print or match pattern 2 and print


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting match pattern 1 and print or match pattern 2 and print
# 1  
Old 03-03-2011
match pattern 1 and print or match pattern 2 and print

hi all

basically i have file called rules which contain lines like below

Code:
/usr/bwmgr/utils/bwmgr em1 -x 735 -name user92 -addr 10.10.201.92 -addrmsk 255.255.255.252 -bwout 1024000 -bwin 2048000 -statsdevice user92 -stats
/usr/bwmgr/utils/bwmgr em1 -x 45032 -name user246 -addr 10.10.224.246 -bwboth 128000 -bwlink grp1 -statsdevice user246 -stats


i have a script which basically looks for the rule number and prints out the bandwidth (in and out)

Code:
sbpc# cat script.sh
#!/bin/sh
RuleNum=$1

/bin/cat /usr/home/bw/rules | /usr/bin/sed 's/^.*-x //' | /usr/bin/awk -v var=$RuleNum '$1==var {for(i=1;i<=NF;i++) {if($i=="-bwout") print $(i+3),$(i+1)}}'
sbpc#

so if i run the script and give input as 735, it will output

2048000 1024000

Code:
sbpc# sh script.sh 735
2048000 1024000
sbpc#

but if I do "sh script.sh 45032" then nothing will be printed out because the script cannot match the pattern "-bwout".
the file lines either contain the word "-bwout" or the word "-bwboth".
how can i change the script so that it will give either match "-bwout" and give output like its doing now or it will match "-bwboth" and print the next word.

so that if i do "sh script.sh 45032" then result should be 128000 .

with the same script i want to get output regardless of pattern "-bwout" or "-bwboth"

tia
# 2  
Old 03-03-2011
Hi sb245, Try this,
Code:
/bin/cat /usr/home/bw/rules | /usr/bin/sed 's/^.*-x //' | /usr/bin/awk -v var=$RuleNum '$1==var {for(i=1;i<=NF;i++) {if($i=="-bwout" ){ print $(i+3),$(i+1)}if($i=="-bwboth"){print $(i+1)}}}'

# 3  
Old 03-03-2011
Maybe you can start from this code:

Code:
grep -Eo "\-bwout [^ ]*|\-bwin [^ ]*" infile

-bwout 1024000
-bwin 2048000

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Match Pattern and print pattern and multiple lines into one line

Hello Experts , require help . See below output: File inputs ------------------------------------------ Server Host = mike id rl images allocated last updated density vimages expiration last read <------- STATUS ------->... (4 Replies)
Discussion started by: tigerhills
4 Replies

2. Shell Programming and Scripting

Print only match pattern

Hi, I want to print the lines from file1 which has the matching pattern from file2 in linux. file1 data is below ----------------- CACA|1234 CA|2345 file2 data is below ----------------- CA NC TX Now I want to print the lines from file1 for the values present in file2. ... (5 Replies)
Discussion started by: ureddy
5 Replies

3. Shell Programming and Scripting

Print occurrences for pattern match

Hi All, I want to print all the occurrences for a particular pattern from a file. The catch is that the pattern search is partial and if any word in the file contains the pattern, that complete word has to be printed. If there are multiple words matching the pattern on a specific line, then all... (2 Replies)
Discussion started by: decci_7
2 Replies

4. Shell Programming and Scripting

Print only next pattern in a line after a pattern match

I have 2013-06-11 23:55:14 1Umexd-0004cm-IG <= user@domain.com I need sed/awk operation on this, so that it should print the very next pattern only after the the pattern mach <= ie only print user@domain.com (7 Replies)
Discussion started by: anil510
7 Replies

5. UNIX for Dummies Questions & Answers

Match Pattern after certain pattern and Print words next to Pattern

Hi experts , im new to Unix,AWK ,and im just not able to get this right. I need to match for some patterns if it matches I need to print the next few words to it.. I have only three such conditions to match… But I need to print only those words that comes after satisfying the first condition..... (2 Replies)
Discussion started by: 100bees
2 Replies

6. Shell Programming and Scripting

Script to match a pattern and print only the pattern and after that

Hi, I am writing a shell script to parse some files, and gather data. The data in the files is displayed as below. .......xyz: abz: ...... .......xyz: abz: ..... I have tried using awk and cut, bu the position of these values keep changing, so I can use awk and split it into columns. ... (14 Replies)
Discussion started by: Serena
14 Replies

7. Shell Programming and Scripting

Need one liner to search pattern and print everything expect 6 lines from where pattern match made

i need to search for a pattern from a big file and print everything expect the next 6 lines from where the pattern match was made. (8 Replies)
Discussion started by: chidori
8 Replies

8. Solaris

Using grep to print just the pattern match

Hi all, Is it possible for grep to output just the pattern match and not the whole line when it comes across a match? I know you can adjust the number of trailing or leading lines that are printed, but am yet to find anything that outputs just the pattern match. Cheers, Tim (5 Replies)
Discussion started by: muzzaw
5 Replies

9. Shell Programming and Scripting

Use to awk to match pattern, and print the pattern

Hi, I know how to use awk to search some expressions like five consecutive numbers, , this is easy. However, how do I make awk print the pattern that is been matched? For example: input: usa,canada99292,japan222,france59664,egypt223 output:99292,59664 (6 Replies)
Discussion started by: grossgermany
6 Replies

10. Shell Programming and Scripting

match a pattern, print it and the next line

I have a file nbu_faq.txt (Question/answer) which looks like this What I am trying to do is write out each question in a file1.txt and than the question/answer in a file2.txt like this file1.txt Q: What is nbu? Q: What is blablabla...? Q: Why ....? file2.txt Q: What is nbu? A:... (4 Replies)
Discussion started by: nymus7
4 Replies
Login or Register to Ask a Question