grep + lines after


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting grep + lines after
# 1  
Old 11-02-2006
grep + lines after

Hello again, I'm still working on the redo of my script I created before and came across a grep question.

I'm on SunOS 5.9 and using the Korn Shell. I'm writing a function to check for validation of root disks being mirrored. If the server allows me to use metastat, I'm looking to show it has root disks, it has mirrors, and that the status is "okay". As always when I post, I give a little to take a little.

My Offering, the first 2/3rds of my Metastat Mirror Check Function:

#!/bin/ksh
#set -x
mirnumvar=`metastat | grep "^d" | grep "Mirror" | cut -d: -f1`
for varmirnum in $mirnumvar
do
#echo $varmirnum
mirvar=`metastat | grep "^d" | grep "Mirror" | grep $varmirnum | cut -d: -f1 | cut -dd -f2`
#echo $mirvar
submirvar=`metastat | grep "^d" | grep "d.$mirvar" | cut -d: -f1`
#echo $submirvar
echo "Mirror $varmirnum Contains Submirrors:" $submirvar
done

This gives output of:
Mirror d4 Contains Submirrors: d14 d24
Mirror d3 Contains Submirrors: d13 d23
Mirror d1 Contains Submirrors: d11 d21
Mirror d0 Contains Submirrors: d10 d20
Mirror d5 Contains Submirrors: d15 d25

I'm now working on grouping together statuses with their respective submirrors. One of the commands I've tinkered with that has gotten me close to the results is the following:

metastat | egrep 'Submirror of|State:'

Results:

State: Okay
State: Okay
d14: Submirror of d4
State: Okay
d24: Submirror of d4
State: Okay

State: Okay
State: Okay
d13: Submirror of d3
State: Okay
d23: Submirror of d3
State: Okay

State: Okay
State: Okay
d11: Submirror of d1
State: Okay
d21: Submirror of d1
State: Okay

State: Okay
State: Okay
d10: Submirror of d0
State: Okay
d20: Submirror of d0
State: Okay

State: Okay
State: Okay
d15: Submirror of d5
State: Okay
d25: Submirror of d5
State: Okay


I have bolded what my desired results would contain, the submirrors and it's statuses underneath it. The other State: Okay's are from the Main root disk Mirrors. Would I be working with properties of grep to try and grep the line after the submirror or a different command to tackle this scenario. As always, hats off and many thanks to those that can tackle this conundrum.

~Ryan
# 2  
Old 11-03-2006
Code:
metastat | sed -n '/Submirror/{p;n;p;}'

# 3  
Old 11-03-2006
Submirror 0: d14
State: Okay
Submirror 1: d24
State: Okay
d14: Submirror of d4
State: Okay
d24: Submirror of d4
State: Okay
Submirror 0: d13
State: Okay
Submirror 1: d23
State: Okay
d13: Submirror of d3
State: Okay
d23: Submirror of d3
State: Okay
Submirror 0: d11
State: Okay
Submirror 1: d21
State: Okay
d11: Submirror of d1
State: Okay
d21: Submirror of d1
State: Okay
Submirror 0: d10
State: Okay
Submirror 1: d20
State: Okay
d10: Submirror of d0
State: Okay
d20: Submirror of d0
State: Okay
Submirror 0: d15
State: Okay
Submirror 1: d25
State: Okay
d15: Submirror of d5
State: Okay
d25: Submirror of d5
State: Okay

This is the result of the sed, again it's a close try but not what I was looking to get exactly. This is the desired output:

d14: Submirror of d4
State: Okay
d24: Submirror of d4
State: Okay
d13: Submirror of d3
State: Okay
d23: Submirror of d3
State: Okay
d11: Submirror of d1
State: Okay
d21: Submirror of d1
State: Okay
d10: Submirror of d0
State: Okay
d20: Submirror of d0
State: Okay
d15: Submirror of d5
State: Okay
d25: Submirror of d5
State: Okay

I appreciate the efforts though! I'm going to keep trying today at work too, thanks again everyone!
# 4  
Old 11-03-2006
Worked on it with my Unix Mentor and wanted to share the results, vgersh, you were real close!

2 ways to approach with the "sed" command:

Approach 1: metastat | sed -n '/Mirror/{n;p;n;p;n;p;n;p;}'
Results:
Submirror 0: d14
State: Okay
Submirror 1: d24
State: Okay
Submirror 0: d13
State: Okay
Submirror 1: d23
State: Okay
Submirror 0: d11
State: Okay
Submirror 1: d21
State: Okay
Submirror 0: d10
State: Okay
Submirror 1: d20
State: Okay
Submirror 0: d15
State: Okay
Submirror 1: d25
State: Okay

Which is probably what i'll use to work with for the script, but there's also

Approach 2: metastat | sed -n '/Mirror/{p;n;p;n;p;n;p;n;p;}'
Results:
d4: Mirror
Submirror 0: d14
State: Okay
Submirror 1: d24
State: Okay
d3: Mirror
Submirror 0: d13
State: Okay
Submirror 1: d23
State: Okay
d1: Mirror
Submirror 0: d11
State: Okay
Submirror 1: d21
State: Okay
d0: Mirror
Submirror 0: d10
State: Okay
Submirror 1: d20
State: Okay
d5: Mirror
Submirror 0: d15
State: Okay
Submirror 1: d25
State: Okay

Either way works, but there you go! Thanks again for all the effort and help!
~Ryan
# 5  
Old 11-03-2006
Both approaches are good, i guess i'll use this for almost the same operation, thanks for sharing this.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grep three consecutive lines if each lines contains certain string

say we have : 2914 | REQUEST | whatever 2914 | RESPONSE | whatever 2914 | SUCCESS | whatever 2985 | RESPONSE | whatever 2986 | REQUEST | whatever 2990 | REQUEST | whatever 2985 | RESPONSE | whatever 2996 | REQUEST | whatever 2010 | SUCCESS | whatever 2013 | REQUEST | whatever 2013 |... (7 Replies)
Discussion started by: Saumitra Pandey
7 Replies

2. UNIX for Advanced & Expert Users

grep for lines not containing #

I'm trying to grep for lines not containing a #. I'm not getting the syntax right. This is what I have tried so far. grep -v \\# /home/bob/.config/vlc/vlcrc grep -v '\\#' /home/bob/.config/vlc/vlcrc grep -v "\\\\#" /home/bob/.config/vlc/vlcrcI tried to look at this thread of mine for ideas... (12 Replies)
Discussion started by: cokedude
12 Replies

3. Shell Programming and Scripting

Grep couple of consecutive lines if each lines contains certain string

Hello, I want to extract from a file like : 20120530025502914 | REQUEST | whatever 20120530025502968 | RESPONSE | whatever 20120530025502985 | RESPONSE | whatever 20120530025502996 | REQUEST | whatever 20120530025503013 | REQUEST | whatever 20120530025503045 | RESPONSE | whatever I want... (14 Replies)
Discussion started by: black_fender
14 Replies

4. Shell Programming and Scripting

AWK/GREP: grep only lines starting with integer

I have an input file 12.4 1.72849432773174e+01 -7.74784188610632e+01 12.5 9.59432114416327e-01 -7.87018212757537e+01 15.6 5.20139995965960e-01 -5.61612429666624e+01 29.3 3.76696387248366e+00 -7.42896194101892e+01 32.1 1.86899877018077e+01 -7.56508762501408e+01 35 6.98857157014640e+00... (2 Replies)
Discussion started by: chrisjorg
2 Replies

5. Shell Programming and Scripting

Extracting specific lines of data from a file and related lines of data based on a grep value range?

Hi, I have one file, say file 1, that has data like below where 19900107 is the date, 19900107 12 144 129 0.7380047 19900108 12 168 129 0.3149017 19900109 12 192 129 3.2766666E-02 ... (3 Replies)
Discussion started by: Wynner
3 Replies

6. Shell Programming and Scripting

Perl XML, find matching condition and grep lines and put the lines somewhere else

Hi, my xml files looks something like this <Instance Name="New York"> <Description></Description> <Instance Name="A"> <Description></Description> <PropertyValue Key="false" Name="Building A" /> </Instance> <Instance Name="B"> ... (4 Replies)
Discussion started by: tententen
4 Replies

7. Shell Programming and Scripting

Print lines between two lines after grep for a text string

I have several very large file that are extracts from Oracle tables. These files are formatted in XML type syntax with multiple entries like: <ROW> some information more information </ROW> I want to grep for some words, then print all lines between <ROW> AND </ROW>. Can this be done with AWK?... (7 Replies)
Discussion started by: jbruce
7 Replies

8. Shell Programming and Scripting

AIX equivalent to GNU grep's -B and -A [print lines after or before matching lines]

Hi folks I am not allowed to install GNU grep on AIX. Here my code excerpt: grep_fatal () { /usr/sfw/bin/gegrep -B4 -A2 "FATAL|QUEUE|SIGHUP" } Howto the same on AIX based machine? from manual GNU grep ‘--after-context=num’ Print num lines of trailing context after... (4 Replies)
Discussion started by: slashdotweenie
4 Replies

9. Shell Programming and Scripting

Grep and delete lines except the lines with strings

Hi I am writing a script which should read a file and search for certain strings 'approved' or 'removed' and retain only those lines that contain the above strings. Ex: file name 'test' test: approved package waiting for approval package disapproved package removed package approved... (14 Replies)
Discussion started by: vj8436
14 Replies

10. Shell Programming and Scripting

grep and fetching lines after grep

suppose i have a file structure(serial file)-- ---------- ---------- --------- summery -------- ------ -------- finished ----- ------- i want to fetch lines from summery to finished i can get line of summery by grep command. but how can i fetch lines untill it reaches finished.probably... (2 Replies)
Discussion started by: arghya_owen
2 Replies
Login or Register to Ask a Question