Help with awk / sed


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with awk / sed
# 1  
Old 03-27-2008
Power Help with awk / sed

Hi i need some help with extracting text from an bash output and I am trying to learn how to use awk - sed.

I have a shell script that will mount an image file and i need to grab some script output and process it by piping the input to awk or sed.

ie.

Output :
add map loop0p1 : 0 208782 linear /dev/loop0 63
add map loop0p2 : 0 20755980 linear /dev/loop0 208845

Output :
Reading all physical volumes. This may take a while...
Found volume group "VolGroup00" using metadata type lvm2

Is it possible with awk or sed to rip out :

loop0p1 and loop0p2
/dev/loop0
VolGroup00
from the text.

I know that awk should have a

match and print substr

But i dont know how to write regexps for this or how to make them work.

Any hints and tips are welcome.

Thnx

Wizkidnono
# 2  
Old 03-27-2008
Is all the output in one file, or do you get these outputs from two different places?

A regular expression is just a piece of text, there are a few special characters which make it a lot more versatile than just wildcards but just try putting the text you want to look for between a pair of slashes. Then in the print part you probably just want one or two fields at predictable places. That's $1 for the first word of output on the matching line, $2 for the second, etc.

Code:
awk '/^add map / { print $3, $8 }'

(The ^ is one of those magical characters; it anchors this to beginning of line.)
# 3  
Old 03-27-2008
Bug

Man that was a quick reply Smilie

This will work Smilie

But is there a way to rip the text out with out knowing the positions of the text ?
Allso sometimes there would be multiple instances og the field on the same line and i would like to catch them all.

Thanx

Wizkidnono
# 4  
Old 03-27-2008
Without detailed examples it's hard to give detailed help. Yes, it can be done.
# 5  
Old 03-27-2008
Its not easy to do mind reading over the internet Smilie

Say that my output is this:

Reading all physical volumes. This may take a while...
Found volume group "VolGroup00" using metadata type lvm2

Can i grab the VolGroup00 without knowing its exact possision or the starting or trailing text.

All i have to go by is VolGroup as the number 00 may have incremented.

I dont know if i am explaining myself properly or not but :

something like a regexp(as i know nothing about) with a constant VolGroup and a variable [0-9]

VolGroup[0-9]

Find the position and rip out the "word" VolGroup00

Thnx for helping me out.

Wizkidnono
# 6  
Old 03-27-2008
That's perfectly understandable. In Awk Classic I guess you would simply run match() on all lines to grab the match; gawk and friends might have a way to figure out what matched in the condition.

In sed the traditional solution would be to replace everything before and after the sought regular expression with an empty string; certainly you could do that in awk too.
# 7  
Old 03-27-2008
Computer Solution !!

Seems i found a viable solution, thought i post it here.
I have now played a bit with awk and come to a solution.

Content of text.txt :

add map loop0p1 : 0 208782 linear /dev/loop0 63
add map loop0p2 : 0 20755980 linear /dev/loop0 208845
Reading all physical volumes. This may take a while...
Found volume group "VolGroup00" using metadata type lvm2

Script :

awk '/VolGroup[0-9]/ {
match($0,/VolGroup[0-9][0-9]/)
print substr($0,RSTART,RLENGTH)
}' text.txt

#First we match /VolGroup[0-9]/ against file and return matching line to $0
#Then we use the match expression to match the VolGroup regexp and find char start and length
#Now we print out the substring of $0 with the start char and length.

Output :

VolGroup00
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed and awk giving error ./sample.sh: line 13: sed: command not found

Hi, I am running a script sample.sh in bash environment .In the script i am using sed and awk commands which when executed individually from terminal they are getting executed normally but when i give these sed and awk commands in the script it is giving the below errors :- ./sample.sh: line... (12 Replies)
Discussion started by: satishmallidi
12 Replies

2. Shell Programming and Scripting

Is this possible using SED and AWK?

Dear Geeks, I want to manipulate a file with certain modifications for that using sed or AWK how to do this process for one file i have this type of data. Input File: "Restricted and Reserved names .ANISH",3798,"TEST.CO",1201208,6/16/10 0:00,6/16/13 0:00,,,"CO","2nd"^M "Restricted and... (4 Replies)
Discussion started by: anishkumarv
4 Replies

3. UNIX for Dummies Questions & Answers

sed/awk or help please

I have a file that contain the data below: B1 1 2 3 B2 20 30 40 B3 7 8 B4 100 B5 21 22 23How can I retrieve the data for B1 into a seperate file. (8 Replies)
Discussion started by: bobo
8 Replies

4. Shell Programming and Scripting

Need help using awk or sed.

Hi All, Is there a way of comparing two columns in the same file and deleting the row if the values of the columns match. I have the sample data file as below. M024900|175309.00|968.00|17 M025001|19861.79|97.90|148 M025002|431.70|159.00|3 M025003|912.30|159.90|6 ... (6 Replies)
Discussion started by: nua7
6 Replies

5. Shell Programming and Scripting

Using sed or awk?

What if I wanted to add a word such as IT after the first character and if theres 3 characters, after the 2nd character? output would be: G, it H G, H it P G, H, P it L I'm thinking that AWK would be the easiest way to do this... Currently looking it up. Right now I'm using awk but I... (13 Replies)
Discussion started by: puttster
13 Replies

6. UNIX for Dummies Questions & Answers

sed or awk?

I've got an inventory database with eight columns with things like product name, manufacturer, UPC code, etc. on each line. Our PO (purchase order) number is in the first column. I can grep the date and get the full line of data but I would like to strip out everything but the PO number in the... (5 Replies)
Discussion started by: NetJones
5 Replies

7. UNIX for Advanced & Expert Users

Awk or Sed help

Hi, I have a data file with 5 columns - like this: "20080401 09:43:08.770798 +0100s","TEST 1","R 1","A TEST","Nov 27 2007","1" "20080401 09:43:08.770798 +0100s","THIS IS A TEST","R 2","B TEST","Nov 30 2007","10" "20080401 09:43:08.770798 +0100s","ANOTHER TEST","R 3","B TEST","Nov 05... (7 Replies)
Discussion started by: MrG-San
7 Replies

8. UNIX for Advanced & Expert Users

sed in awk ? or nested awk ?

Hey all, Can I put sed command inside the awk action ?? If not then can i do grep in the awk action ?? For ex: awk '$1=="174" { ppid=($2) ; sed -n '/$ppid/p' tempfind.txt ; }' tempfind.txt Assume: 174 is string. Assume: tempfind.txt is used for awk and sed both. tempfind.txt... (11 Replies)
Discussion started by: varungupta
11 Replies

9. Shell Programming and Scripting

sed,awk

Hi, I know sed is stream text editor and not a bit more than that. Can anyone explain its usage and advantages? How is awk different from sed? I donno i am a bit confused about it. But i have coded in awk and shell. Thanks, Nisha :confused: (7 Replies)
Discussion started by: Nisha
7 Replies

10. Shell Programming and Scripting

awk / sed

I have many messages such as the test message below: 00:00000:00021:2002/05/13 13:57:00.51 ERROR:- Test error, my test error!!! I am writing a script in which I need to get everything from the word "ERROR:-" onwards. I normally use awk for these things, but I am not an expert at it so i am... (6 Replies)
Discussion started by: baileyr1
6 Replies
Login or Register to Ask a Question